只是好奇,爲什麼我不能從'local_variables'數組中刪除聲明的局部變量。local_variables的行爲 - 任何人都可以解釋嗎?
實施例:
x=1
myarr = local_variables.clone
p local_variables
=> [:x, :_]
p myarr
=> [:x, :_]
p local_variables.class
=> Array
p myarr.class
=> Array
myarr.delete :x
p myarr
=> [:_]
local_variables.delete :x
p local_variables
=> [:x, :_]
WTF?
我也懷疑調用local_variables.delete與參數:X重新插入回來,因爲它是重新申報。但如果與其他以前未聲明的符號調用不會改變它:
p local_variables
=> [:x, :_]
local_variables.delete :whatever
p local_variables
=> [:x, :_]
有人可以解釋嗎?
Thx。
我看到,它只是返回一個數組的實例的方法。這是一個解釋。謝謝。 – 2010-11-11 20:42:17
它只是提出了一個問題,即如何在程序運行時確定符號是變量還是方法。必須有可能,因爲Ruby解釋器必須知道如何處理它。 – 2010-11-11 21:02:32
@David:'local_variables.include?(symbol)' – sepp2k 2010-11-11 21:06:30