只是好奇,为什么我不能从'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