> irb(main):001:0> foo = true unless defined?(foo) => nil irb(main):002:0> unless defined?(fooo) ; fooo = false ; end => false
谢谢
当代码在第一行进行评估时,它不会执行赋值部分,因为foo设置为nil.在第二行,因为fooo还没有解析,定义?返回nil让块内的代码执行并分配fooo.
举个例子你可以试试这个:
if false foo = 43 end defined? foo => "local-variable"
这是从ruby-forum上的论坛post.