Ruby メソッドの戻り値を取得する方法


スポンサーリンク

Rubyでメソッドを作るための構文は以下のように書きます。

def メソッド名(仮引数...)
  #メソッドの処理
end

例を見てみましょう。

def say_hello(names)
  names.each do |name|
  	puts "hello,#{name}"
  end
end

name_array = ['takashi','yuasa','yoshida']

say_hello(name_array)

これを実行した結果は以下のようになります。

hello,takashi
hello,yuasa
hello,yoshida

メソッドの呼び出しは、

レシーバ.メソッド名

のようにします。

今回のdef say_helloが、レシーバなしで呼び出すことができているのは、say_helloメソッドがトップレベルで定義されているからです。


さて、タイトルにある、Rubyのメソッドの戻り値は、そのメソッドの中で最後に評価された式の値になります。

たとえば、以下のような場合は、

def calc(num1,num2)
  num1 + num2
end

result = calc(100,200)
puts result
300

と表示されます。

returnを使うのは以下のような場合です。

  • 処理の途中で呼び出し元に処理を戻したいとき
  • メソッドの最後の評価式以外の値を返したいとき

以下のような例の場合は、

def calc(num1,num2)
  return num1 * num2

  num1 + num2
end

result = calc(100,200)

上のreturnのところで戻り値が返されます。

20000


下のようにした場合は、値は返されず、そのまま呼び出し元に処理は返されます。

def calc(num1,num2)
  if num1 > 100
    return
  end
  num1 + num2
end

result = calc(200,200)
puts result