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