1

私は以下の両方の公案の答えが

:default_value

しかし、正解は明らかに:false_valueです。

最初のものでは、私はunlessステートメントが意味することを理解しています、

result = :false_value but not if the control statement is false. 

制御ステートメントは「false」、つまりunless false、結果は:default_valueである必要があります。2番目の公案についても同じです。

説明してください

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 に答える