1
在Ruby中,爲什麼你寫的:在一個線路條件分配未定義的變量
# b is not defined yet.
#
if b = true
a = b
end
# => a = true
但不是一個班輪:
a = b if b = true
# => NameError: undefined local variable or method `b' for main:Object
在Ruby中,爲什麼你寫的:在一個線路條件分配未定義的變量
# b is not defined yet.
#
if b = true
a = b
end
# => a = true
但不是一個班輪:
a = b if b = true
# => NameError: undefined local variable or method `b' for main:Object
因爲Ruby解釋器「創造」一個地方當它看到一個任務時變量。
在第二種情況下,它還沒有看到賦值,所以當解析表達式時變量不存在。
更確切地說,一個方法首先被解析爲一個內部表示,然後,最終可能調用代碼並實際執行。
變量在解析過程中「創建」。這實際上更像是一個聲明問題,它只是意味着解釋者意識到他們。它們不會被創造出來,直到周圍的方法被某人調用時才被賦予空間或價值。