3

if(or unless) 修飾子の正式な仕様はどこにも見つかりませんでした。

123 if x > 0

xがゼロを超えていない場合、上記のステートメントの値は何ですか? irbを示唆しnilていますが、どこかに文書化されていますか?

(はい、これはおそらくばかげた質問です。申し訳ありませんが、仕様が見つかりませんでした)。

4

2 に答える 2

5

評価されない式は、存在しない式と同じです。また、条件は、定義やメイン環境などのコードブロックの一部である必要があります。コンテンツのないコードブロックは、に評価されnilます。

class A; end
# => nil

def foo; end
foo
# => nil

()
# => nil

begin; end
# => nil

eval("")
# => nil

したがって、例が返される理由nilは、条件自体とは何の関係もありません。評価がないからです。

于 2013-02-15T18:49:58.797 に答える
3

はい、そうですnil。他に何を返すことができますか?句内のステートメントifは if 自体に使用され、thenステートメントは実行されません。返すものがないのでnil.

関連スペック

it "returns nil if else-body is empty and expression is false" do
  if false
    123
  else
  end.should == nil
end
于 2013-02-15T18:37:58.433 に答える