Railsで開発している際に既存コードにreturnが書かれていなかったり、returnを書いてrubocopに指摘されたりしたので調べました。
rubyでは不要であればreturnは書かない方針のようです。
RubyではReturnの記述は不要
Rubyのメソッドでは、最後に評価された値が返るという仕様になっています。
例えば以下のような文字列を返すメソッドがあります。
def hoge(is_hoge)
if is_hoge
"hoge"
else
"fuga"
end
end
最後に評価された値が返るので、それぞれ以下を返します。
hoge(true) # "hoge"
hoge(false) # "fuga"
後置ifでは注意が必要
例
def hoge(is_hoge)
"fuga"
"hoge" if is_hoge
end
hoge(true) # "hoge"
hoge(false) # nil
なんとなくhoge(false)
でfugaが帰って来そうですが、最後で評価された値が返るのでnilが帰ってきます。
後置ifでは、ifの右側の値が評価されたあと、trueならば左側が評価されます。
falseであればnilを返します。
例の場合、hoge(false)
でif is_hoge
は成立しないので、左側のfugaは評価されず、
"hoge" if is_hoge
が最後に評価された値となり、nilを返します。