本文へスキップ
BecomeCoder

Rubyコース · 第5章 メソッド · レッスン21

メソッドを定義する ― defと暗黙のreturn

ブラウザで完結

導入

「挨拶をする」「合計を計算する」といった処理は、プログラムの中で何度も使いたくなります。そのたびに同じコードを書き写すのではなく、名前を付けて再利用できるようにしましょう。

説明

graph LR
  A["呼び出し側: greet(\"太郎\")"] --> B["def greet(name) ... end"]
  B --> C["戻り値を返す"]
  C --> A

def メソッド名 ... end でメソッドを定義します。

def greet
  "こんにちは!"
end

puts greet

def add(a, b)
  a + b
end

puts add(3, 5)

Ruby のメソッドには大事な特徴があります。メソッドの最後に評価された式の値が、自動的に戻り値になります(明示的に return を書かなくてよい)。add(a, b) では最後の行 a + b の結果がそのまま戻り値です。これを暗黙のreturnと呼びます。

やってみよう

add の中身を a - ba * b に変えて、戻り値がどう変わるか確かめましょう。新しいメソッドを1つ自分で定義してみてください。

演習

double(n) というメソッドを定義し、引数を2倍にして返すようにしてください。puts double(7) の結果(14)を表示してください。

ヒント1を見る

def double(n) n * 2 end のように定義します。

ヒント2を見る

最後の式がそのまま戻り値になるので return は不要です。

実際に動かしてみよう

下のエディタにRubyを書いて「実行」を押すと、学習用シミュレータが puts / print / p の出力を表示します(本物のRubyではなく、教材の範囲を再現した軽量な自作エンジンです)。配列・ハッシュ・ブロック(each/map/select)・メソッド・クラス・モジュール・例外なども動きます。本文の例を書き換えて動かしてみましょう(gem・Rails・ファイル入出力など一部の機能は対象外です。文字列を伸ばすときは str << も可能ですが、変数に反映されるのは str += です)。

Ruby — ブラウザ内で実行(学習用シミュレータ)

Rubyの教材サブセットを動かす学習用シミュレータを読み込みます(本物のRubyではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。