メソッドの戻り値

広告

メソッドでは戻り値をメソッド呼び出し元に返すことができます。例えば引数に指定した数値をメソッド側で計算を行い、その結果を呼び出し元に返すといったことができます。書式は次の通りです。

変数 = メソッド名(引数1, 引数2, ...)

メソッド呼び出し側では、メソッドからの戻り値があった場合、メソッド呼び出しの式が戻り値を返します。その為、上記のように変数などに格納することが可能です。

メソッド側では「return」文の後ろに記述された式の値が戻り値となります。

def メソッド名(変数1, 変数2, ...,)
  実行する処理
  実行する処理

  return 式
end

式には単なるオブジェクトや演算式などを記述できます。演算式を記述した場合はその結果が戻り値として返されます。「return」文が実行されればメソッド内の処理は終了します。

具体的には次のように記述します。

def tashizan(num1, num2)
  return num1 + num2
end

sum = tashizan(10, 25)
print("合計 = ", sum)

上記では「return」の次に記述された「num1 + num2」の結果がメソッドの戻り値となります。メソッド呼び出し側では戻り値をいったん変数「sum」に代入し、その後で表示しています。

なお「return」は省略可能です。省略された場合はメソッド内の最後の式を評価した値が戻り値となります。また「return」文を使用すればメソッド内のどの位置であっても記述することが可能です。

def hikaku(num1, num2)
  if num1 > num2 then
    return num1
  else
    return num2
  end
end

num = hikaku(10, 25)
print("大きい値 = ", num)

上記ではメソッド内で引数として渡されてきたオブジェクトを比較し、実行する「return」文を分けています。

サンプルプログラム

では簡単なプログラムで確認して見ます。

test6-1.rb

#! ruby -Ku
require "kconv"

def hikaku(num1, num2)
  print("num1 = ", num1, "¥n")
  print("num2 = ", num2, "¥n")
  if num1 > num2 then
    return num1
  else
    return num2
  end
end

num = hikaku(10, 18)
print(Kconv.tosjis("大きい値は"), num, Kconv.tosjis("です¥n"))

num = hikaku(27, 5)
print(Kconv.tosjis("大きい値は"), num, Kconv.tosjis("です¥n"))

上記のプログラムを「test6-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。

メソッドの戻り値

( Written by Tatsuo Ikura )