メソッドが返す戻り値を理解しよう

学習の目標

本章では、以下の内容を学習します。

  • メソッドの戻り値の概念を理解する
  • 暗黙の戻り値(最後に評価された式)の仕組みを習得する
  • returnキーワードを使った明示的な戻り値の指定方法を学ぶ
  • returnによるメソッドの中断と戻り値の関係を理解する
  • 戻り値を活用したプログラミングのテクニックを習得する

はじめに

前回、メソッドの定義の仕方と呼び出し方について学びました。メソッドを使うことで、コードを整理し、再利用できることを理解したと思います。

今回は、メソッドの戻り値について学習していきます。戻り値とは、メソッドが計算や処理をした後に返してくれる結果のことです。例えば電卓でボタンを押したら計算結果が表示されるように、メソッドも呼び出すと何らかの値を返してくれます。

この戻り値の概念を理解することで、メソッドをさらに効果的に活用できるようになります。それでは具体的な例を見ていきましょう。

メソッドからの戻り値

まずは具体例で説明してみましょう。method.rbファイルに、簡単な足し算をするメソッドを作ってみます。

def calculate_sum
2 + 3
end
result = calculate_sum
puts result # 5

このコードを実行すると、5という数字が表示されます。

ここで何が起きているのでしょうか?calculate_sumメソッドの中で計算された2 + 3の結果である5が、メソッドの戻り値として返されています。そして、その戻り値をresult変数に代入し、putsで表示しています。

Rubyでは、メソッドの中の最後に実行された処理の結果が、自動的に戻り値になります。これを暗黙の戻り値と呼びます。

別の例も見てみましょう。

def get_greeting
"こんにちは"
end
message = get_greeting
puts message # こんにちは

この例では、get_greetingメソッドの最後の式が文字列"こんにちは"なので、それが戻り値となります。

returnを使った明示的な戻り値の指定

returnというキーワードを使うと、明示的に戻り値を指定することができます。

def greet
return "こんにちは"
puts "この行は実行されません"
end
puts greet # こんにちは

returnが実行されると、その時点でメソッドの処理が終了し、returnの後ろの値が戻り値として返されます。そのため、return "こんにちは"の後に書かれたputs "この行は実行されません"という処理は、実行されることはありません。

この性質は、特定の条件のときに処理を中断したい場合に活用できます。

次に、returnを使って数値を返すメソッドも見てみましょう。

def get_lucky_number
return 777
end
puts get_lucky_number # 777

このメソッドは単純に777という数値を返します。get_lucky_numberを呼び出した結果を表示すると、777が表示されます。

このように、メソッドが返した値をそのまま表示することができます。

最後の式が戻り値になることを活用する

Rubyでは、returnを書かなくても最後に評価された式が戻り値になります。そのため、シンプルにこのように書くこともできます。

def get_message
"Hello"
end
puts get_message # Hello

returnを書かなくても、"Hello"が戻り値として返されます。

実際のRubyプログラミングでは、明示的なreturnを書くのは、メソッドの途中で処理を終了させたい場合がほとんどです。それ以外の場合は、暗黙の戻り値(最後の式の値)を利用するのが一般的です。

まとめ

本章では、メソッドの戻り値について学習しました。以下の内容をマスターできたことと思います。

  • メソッドは処理の結果を戻り値として返すことができる
  • 戻り値は、メソッドの中で最後に実行された処理の結果が自動的に返される
  • returnを使うと、明示的に戻り値を指定でき、その時点でメソッドの処理を終了できる

戻り値を理解することで、メソッドをより効果的に活用できるようになります。メソッドが単に処理を実行するだけでなく、計算結果や処理結果を返せることで、そのメソッドを使ってさらに複雑な処理を組み立てることができます。

このセクションは有料サブスクリプションへの登録、またはログインが必要です。完全なコンテンツにアクセスするには、料金ページ(/pricing)をご覧ください。購入済みの場合は、ログインしてください。

Starterプランでより詳しく学習

この先のコンテンツを読むにはStarterプラン以上が必要です。より詳細な解説、実践的なサンプルコード、演習問題にアクセスして学習を深めましょう。

作成者:とまだ
Previous
メソッドで処理をまとめよう