1

我本来希望下面两个 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
4

2 回答 2

2

在这两种情况下,正确答案都是:false_value。你可以这样想:

unless方法if !(...)

unless false意思是if !(false)什么意思if true

或者只是注意双重否定相互抵消。

于 2012-08-25T03:20:02.233 回答
0

布尔文字混淆了公案。一个更好的例子是

p customers unless customers.empty?

意思是,'打印数组customers,除非它是空的'。等效地,

p customers if customers.size > 0
于 2012-10-12T18:51:19.370 回答