5

我幾次見過術語「詞彙變量」,主要是在關閉的情況下。 Paul Graham在他的書中使用了關於Lisp的術語,指的是使用let表達式定義的變量。爲什麼我有時會聽到術語「詞彙變量?」

我知道詞法作用域是靜態作用域的另一個名稱。詞法變量只是一個在程序單元的引用環境中可見的變量?

我希望用這個詞來打動我的朋友和家人這個假期,有人能幫助我嗎?

+2

+1因爲想用編程術語來打動你的家人。你必須有一個書呆子的家庭。 :) – 2008-12-19 18:25:21

回答

0

詞法變量在程序單元的引用環境中可見,但並不是所有在程序單元引用環境中可見的變量都必須是詞法變量。

基本上,一個詞法變量是特定到它定義的範圍。在像Perl這樣的語言中,基本上有兩個名稱空間相互掩蓋:底層的動態包名稱空間和重疊的詞法名稱空間。所以$ foo也可以參考,這完全取決於它是否是詞法上的。

+0

因此,可以說「詞彙變量」和「局部變量」這兩個術語是可以互換的嗎?詞彙有些更精確? – 2008-12-19 18:15:25

3

詞法變量是一個變量,只能在其詞法範圍內引用(按名稱)。換句話說,變量的範圍由程序的文本定義,而不是程序執行的動態。變量和綁定到它的值可能具有超出詞法範圍的範圍(生命),例如,如果它在閉包中被捕獲。

請參閱對scope and extent的描述。