变量中获得初始化为零
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如果块的执行后,所获得的价值nil
,而预期的结果将是undefined local variable or method b for main:Object
,是否红宝石初始化事先存储所有的变量nil
?变量中获得初始化为零
同样的情况下,用下面的代码
if nil
bb = 10
end
p bb # nil
有人请扔在红宝石如何初始化变量,什么是在这种情况下,要对一些轻,感谢
“[局部变量]是如果它出现在赋值表达式的左边(在等号(U + 003D)之前),即使表达式没有真正执行,它也会被初始化,后一类变量的值为nil。
编辑:这个答案用于指向一个相当不错的Ruby引用,它显然已被恶意软件站点所取代。我删除了链接,但保留了答案的引用。
链接不再工作。 – 2014-04-05 19:17:05
链接指向潜在的恶意软件站点。 – 2014-12-23 20:10:08
看起来你是对的。我已经删除了这个链接,以免任何人误操作。 – 2014-12-24 19:39:07
[为什么Ruby似乎会从case语句中提取变量声明,即使该代码路径未执行?](http://*.com/questions/12928050/why-does-ruby-seem - 从一个案件内的声明 - e) – sawa 2013-03-06 06:44:40