Erstens gibt es zwei Arten von Bereichen.
Jedes ist eine Spezifikation der Variablenreferenz, und der lexikalische Umfang wird in vielen wichtigen Sprachen wie Ruby, Java, Javascript und Python übernommen.
Es ist sehr einfach. Siehe den Code unten.
var = 'Ich bin auf höchstem Niveau'
def a_method
return var
end
def b_method
var = 'Ich bin der Inhalt des Objekts'
return var
end
a_method
#-> 'Ich bin auf höchstem Niveau'
Es ist natürlich, Ruby usw. zu schreiben, aber es ist nicht möglich, von a_method auf die var von b_method zu verweisen. Dies ist ein lexikalischer Bereich ... !!! Es scheint jedoch, dass es Sprachen auf der Welt gibt, in denen der Umfang der Variablen bei der Bewertung einer Funktion bestimmt wird. Es scheint, dass sie als dynamische Bereiche bezeichnet werden, aber zum Beispiel scheinen Lisp und Emacs diese Bereiche zu übernehmen.
Das ist nicht Ruby. Dynamischer Ruby, der einen Ruby-ähnlichen dynamischen Bereich verwendet. (Es gibt so etwas nicht, aber es ist ein geprägtes Wort.)
def a_method
p var
end
def b_method
var = 'Ich bin B.'
a_method
end
def c_method
a_method
end
b_method
#-> 'Ich bin B.'
c_method
#-> undefined variable 'var'
Wird sein. Das heißt, der Bereich wird bestimmt, wenn Sie die *** -Funktion auswerten, nicht der Bereich, wenn Sie die Funktion definieren. *** ***
Es scheint einfach, die Sprache w zu implementieren Warum haben Lisp, Emacs usw. es übernommen? Es scheint, dass es so geschrieben ist. Lol
Recommended Posts