变量用nil初始化

时间:2013-03-06 06:25:22

标签: ruby

p b #undefined local variable or method b for main:Object
a = nil
if a and (b=3)
  do_something_with b
end
p b # nil

为什么b在执行if块后获得值nil,而预期结果为 undefined local variable or method b for main:Object,Ruby是否事先将所有变量初始化为内存中的nil? / p>

以下代码的相同案例

if nil
  bb = 10
end
p bb # nil

有人请说明ruby如何初始化变量以及在这种情况下发生了什么,谢谢

1 个答案:

答案 0 :(得分:5)

“[局部变量]如果出现在赋值表达式的左侧(等号(U + 003D)之前),则初始化,即使表达式实际上没有执行。后一种变量具有价值零。“

编辑:这个答案过去常常指向一个相当不错的Ruby引用,它显然被恶意软件站点所取代。我删除了链接,但保留了答案的引用。