Σε Ρουμπίνι, δεν χρειάζεται να δηλώνετε μεταβλητές, αλλά πρέπει να τους δώσετε κάτι πριν να μπορέσουν να αναφερθούν.
Αν αναφέρεστε σε ένα τοπική μεταβλητή που δεν υπάρχει ακόμα, μπορεί να δείτε ένα από τα δύο σφάλματα.
Ruby NameError Μηνύματα
NameError: undefined τοπική μεταβλητή ή μέθοδος `a 'για #
NameError: undefined τοπική μεταβλητή ή μέθοδος `a 'για main: Object
Σημείωση: Μπορεί να υπάρχουν διάφορα αναγνωριστικά στη θέση του 'ένα' πάνω από.
Αυτό είναι ένα παράδειγμα όπου ο κώδικας θα δημιουργήσει το μήνυμα "ΌνομαError" Ruby από τη μεταβλητή ένα δεν έχει ακόμη ανατεθεί σε τίποτα:
βάζει ένα
Πώς να διορθώσετε το σφάλμα
Οι μεταβλητές πρέπει να εκχωρηθούν πριν μπορέσουν να χρησιμοποιηθούν. Έτσι, χρησιμοποιώντας το παράδειγμα από τα παραπάνω, ο καθορισμός του σφάλματος είναι τόσο απλό όσο γίνεται:
α = 10. βάζει ένα.
Γιατί αντιμετωπίζετε αυτό το σφάλμα
Η προφανής απάντηση είναι ότι αναφέρεστε σε μια μεταβλητή που δεν έχει ακόμη δημιουργηθεί. Αυτό οφείλεται περισσότερο συχνά σε τυπογραφικό λάθος, αλλά μπορεί να συμβεί όταν ο κώδικας refactoring και οι μετονομασία μεταβλητές.
Ενδέχεται επίσης να δείτε το σφάλμα Ruby "NameError: undefined local variable" αν σκοπεύατε να εισαγάγετε μια συμβολοσειρά. Οι χορδές γίνονται αντιληπτές όταν υπάρχουν μεταξύ εισαγωγικών. Εάν δεν χρησιμοποιήσατε εισαγωγικά, ο Ruby θα σκεφτεί ότι σκοπεύατε να αναφέρετε μια μέθοδο ή μεταβλητή (που δεν υπάρχει) και να ρίξετε το λάθος.
Επομένως, κοιτάξτε πίσω τον κωδικό σας για να δείτε τι πρέπει να αναφέρεται αυτή η μεταβλητή και επιδιορθώστε την. Μπορεί επίσης να θέλετε να αναζητήσετε άλλες εμφανίσεις του ίδιου ονόματος μεταβλητής με την ίδια μέθοδο - αν είναι λάθος σε ένα μέρος, μπορεί να είναι λάθος σε άλλους.