<a href="http://d.hatena.ne.jp/rubyco/20070620/returnvalue">メソッドの戻り値</a>


Rubyでは、returnが書かれていないとき最後に実行した文の値が戻り値になります。

def method
  "hello" if false
end

p method #=> nil

上で、表示されるのがfalseではなくnilなのは、ifの条件式が成り立っていないときのif文の値はnilだから、と理解しました。最後に評価した式の値が戻り値なのではなく、最後に実行した文の値が戻り値と理解しました。仕様書がないので確かめることはできませんけれど。


というか、if節が必ずこけるので、methodメソッドの返す値がない(nil)なのではないでしょうか。この後のwhile節も。
極端な例。

def method
end
p method #=> nil

def method2
  "hello"
  "bye" if false
end
p method2 #=> nil

違うじゃん!rubycoの中の人が正しかった!
…まあ、ifだって評価式だという見方もできるからな(負け惜しみ