使用Ruby 2.1.1和Rails 3.2.13,我希望以下行返回true或false,但当href
为nil时,hasHref
设置为nil:
hasHref = (defined?(href) && !href.blank?)
我知道如何解决这个问题,但很奇怪为什么这不符合我的预期。它像我在Ruby 1.8.7中所期望的那样工作。
答案 0 :(得分:4)
foo && bar
不会返回true
或false
。当foo
而foo
时,它会返回bar
{/ 1}} >。 trueish 的定义:不是foo
或nil
。
false
永远不会返回defined?
或true
,它会返回类型说明。如果未定义false
,则href
会返回defined?(href)
(不是 trueish ),因此会返回nil
。
如果您确实需要nil
或true
将代码更改为:
false
有关hasHref = !!(defined?(href) && !href.blank?)
的可能返回值,请参阅:http://ruby-doc.com/docs/ProgrammingRuby/html/tut_expressions.html#UG