Rubyスタイルガイドにあります。
1 > 2 ? true : false; puts 'Hi'
これは常に返されると思いますHi
が、どうすれば読むことができますか?
1> 2の場合はtrue、それ以外の場合はfalseです。
ただし、hi
条件の結果が何であれ、出力されます。
それは同じです:
if 1 > 2 then
true
else
false
end
puts 'hi'
あなたはこれを次のように読むことができます
1 > 2 ? true : false # first line of code
puts "Hi" #second line of code
1> 2?真/偽; 「こんにちは」を意味します
if 1 > 2
return true
else
return false
end
puts "Hi"
ここで毎回、条件外で「Hi」を出力するため、結果は「hi」を出力するものになります。
しかし
if 1 > 2
puts "1 is not greater than 2"
else
puts "1 is greater than 2"
end
コンソールでテストすることもできます
1.9.3p125 :002 > if 1 > 2
1.9.3p125 :003?> puts "1 is not greater than 2"
1.9.3p125 :004?> else
1.9.3p125 :005 > puts "1 is greater than 2"
1.9.3p125 :006?> end
1 is greater than 2
=> nil
Rubyコンパイラは次のように読み取ります。
1.>( 2 )
puts "Hi"
三項演算子?:冗長です。比較'より大きい'記号:>は実際には数値クラスのメソッドです。
1が2より大きい場合はtrue、それ以外の場合はfalse。次に、こんにちは
セミコロンは、2行のコードをインラインで区切る方法です。だからそれは
1 > 2 ? true : false
puts "Hi"
これは
false
puts "Hi"
そしてもちろん、ただ言う行false
は何もしません(関数定義の最後の行である場合など、いくつかの場合を除いて、メソッドはその行に到達するとfalseを返します)。