我原本预计下面两个koans的答案都是
:default_value
但正确答案显然是:false_value
。
在第一篇中,我理解除非声明,
result = :false_value but not if the control statement is false.
由于控制声明是“假”'即unless false
,因此结果应为:default_value。第二个公案也一样。
请解释
def test_unless_statement
result = :default_value
unless false
result = :false_value
end
assert_equal __, result
end
def test_unless_statement_modifier
result = :default_value
result = :false_value unless false
assert_equal __, result
end
答案 0 :(得分:2)
在这两种情况下,正确的答案是:false_value
。你可以这样想:
unless
表示if !(...)
unless false
表示if !(false)
,表示if true
或者只是注意双重否定相互抵消。
答案 1 :(得分:0)
布尔文字混淆了公案。一个更好的例子是
p customers unless customers.empty?
意思是'打印数组customers
,除非它是空的'。等价地,
p customers if customers.size > 0