2

irb以下は、シェルの簡単なステートメントです。nil出力はどういう意味ですか?ifブロック内のprintステートメントに付随するのはなぜですか?

irb(main):062:0> if(x==20 && y==30)
irb(main):063:1> print("if statement working !")
irb(main):064:1> else
irb(main):065:1* print("else statement working !!")
irb(main):066:1> end
if statement working !=> nil # what does nil represent here ?
4

2 に答える 2

5

Rubyでは、すべての式は、たとえそれがであっても、値を返しますnil。ブロックとメソッドは、最後に評価された式の値を返すだけです。これを効果的に使用する方法はたくさんあります。たとえば、これが明示的なreturnsが使用されないことが多い理由です。また、これを行うことができます:

print if x == 20 && y == 30
  'if statement working!'
else
  'else statement working!'
end

あなたの例に関して:あなたが指示したように文字列を印刷することに加えて、irbそれがif-elseブロックから受け取った値を表示します。print常にを返すためnil、両方のブランチは同じ値を返します。

于 2012-06-12T11:47:18.990 に答える
2

これは、if-blockが値を返さないことを意味します(実際には、値を返すことができます)。たとえば、以下は完全に合法で実行可能です。

foo = if bar > 10
    42
else
    0
end

# now, foo is either 42 or 0
于 2012-06-12T11:25:51.430 に答える