【发布时间】:2013-06-11 13:36:12
【问题描述】:
我在 Rails 视图部分的开头有这个:
<% enabled = true unless defined?(enabled) %>
这是通过设置默认值来处理调用视图未传入enabled本地时的情况。
但是 enabled 没有设置为 true。
我知道 enabled ||= true 的构造,但我不能在这里使用它,因为传入的值可能是 false。这将被true 覆盖。
【问题讨论】:
-
如果传入的值为
false,在enabled ||= true的情况下,它不会被true覆盖。您的回答很好,但您提出这个问题的逻辑至少值得怀疑:) -
@ARK
||=将覆盖任何虚假值。如果false没有发生覆盖,则应该打印[true, false, true]的测试:def testme(enabled); enabled ||= true; enabled; end; p [testme(true), testme(false), testme(nil)]。它打印 3trues。 -
感谢您的回复。有趣的!我一定会对此进行测试并研究它为什么/如何发生。有趣。
-
@ARK 如果您发现这种行为令人惊讶,请参阅this answer 以更好地了解
||。注意enabled ||= expression等价于enabled = enabled || expression。 -
我在 irb 中测试过,明白你的意思。非常感谢:)
标签: ruby-on-rails ruby partial-views variable-assignment