LoginSignup
0
0

More than 3 years have passed since last update.

Rubyではメソッドにreturnの記述要らない?

Last updated at Posted at 2020-01-24

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を返します。

0
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0