【发布时间】:2010-02-18 19:39:57
【问题描述】:
这里发生了什么? “除非”这两种形式的细微差别是什么?
> irb(main):001:0> foo = true unless defined?(foo)
=> nil
irb(main):002:0> unless defined?(fooo) ; fooo = false ; end
=> false
谢谢
【问题讨论】:
-
你使用的是什么版本的 Ruby?
-
所有这些关于分配变量的讨论,除非它们已经定义,我不得不指出
foo ||= true完成了同样的事情(并且总是返回true)。 -
@Allison R. 如果
foo已定义但为假,则不是。 -
我建议您使用更具描述性的标题,而不是使用诸如“Ruby 中发生了什么?”之类的模糊标题。至少,您应该在标题中包含“除非”一词。这样如果有人遇到同样的问题,他们可以根据问题的标题知道这个问题可能是相关的。
-
在一行中更好的方法是
defined?(foo) or foo = true。
标签: ruby