bme*_*ere 7 ruby local-variables
如果我执行这个ruby代码:
def foo
100
end
p defined?(foo), foo
if false
foo = 200
end
p defined?(foo), foo
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
"method"
100
"local-variable"
nil
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释为什么foo设置为nil不执行if后?这是预期的行为还是红宝石?
nil即使无法像在if false案例中那样到达代码,分配左侧的名称也会设置为.
>> foo
NameError: undefined local variable or method `foo' for main:Object
...
>> if false
.. foo = 1
.. end #=> nil
>> foo #=> nil
Run Code Online (Sandbox Code Playgroud)
当Ruby尝试解析裸字时,它首先查找局部变量(在Pickaxe书中有一个引用,我现在似乎无法找到).既然你现在有一个叫它foo显示nil.正如Mischa所说,该方法仍然可以称为foo().
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |