如果代码是
do_more ||= true
然后传入false
时,它变为
do_more = false || true
因此仍然是真的。那么这是foo ||= default_value
不起作用的一种情况?在这种情况下,它需要
do_more = true if !defined? do_more
答案 0 :(得分:0)
更一般地说,如果foo的有效值为false,则foo ||= default_value
永远不会有效。
foo ||= default_value
才是有效模式。
您对do_more == true if !defined? do_more
的陈述应该使用赋值运算符,我假设一个拼写错误:do_more = true if !defined? do_more
也许更好的是do_more = true unless defined? do_more
对我来说这看起来不错,但您需要进行测试以确保其正常工作。
如果你的param是从HTML表单进来的,那么未定义的case实际上是一个零长度的字符串,“”。如果这是你的情况,那么你想要:
do_more = true if do_more == ''
我还建议发表评论#set default