当a
是不确定的,那么a || 1
将抛出一个错误,但a = a || 1
不会。这是不是有点不一致?为什么在Ruby中,|| 1在未定义a时会引发错误,但a = a || 1不会?
irb(main):001:0> a
NameError: undefined local variable or method 'a' for main:Object
from (irb):1
from c:/ruby/bin/irb:12:in '<main>'
irb(main):002:0> a || 1
NameError: undefined local variable or method 'a' for main:Object
from (irb):2
from c:/ruby/bin/irb:12:in '<main>'
irb(main):003:0> a = a || 1
=> 1
重复http://stackoverflow.com/questions/1462407/ruby-edge-cases的 – 2010-06-06 23:20:52