本文へスキップ
BecomeCoder

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

デフォルト引数・キーワード引数 ― 呼び出しを柔軟にする

ブラウザで完結

導入

「引数を省略したら決まった値を使いたい」「引数の意味を名前で分かりやすくしたい」――そんなときに使えるのがデフォルト引数とキーワード引数です。

説明

引数に = 値 を付けると、呼び出し時に省略された場合のデフォルト値になります。

def greet(name = "ゲスト")
  puts "こんにちは、#{name}さん"
end

greet
greet("太郎")

キーワード引数引数名: の形で定義し、呼び出し時も 引数名: 値 で渡します。順番を気にせず渡せるのが利点です。

def introduce(name:, age:)
  puts "#{name}#{age}歳)です"
end

introduce(name: "花子", age: 22)
introduce(age: 30, name: "次郎")

キーワード引数は、引数がたくさんあるメソッドで「どの値が何を表しているか」を呼び出し側でも分かりやすくしてくれます。

やってみよう

greet を引数なしで呼んだときと引数ありで呼んだときの違いを確かめましょう。introduce の呼び出し順を入れ替えても結果が変わらないことも確認してください。

演習

power(base:, exp: 2) というメソッドを定義し、baseexp 乗を返すようにしてください(exp のデフォルトは 2)。puts power(base: 3) の結果(9)を表示してください。

ヒント1を見る

def power(base:, exp: 2) base ** exp end のように定義します。

ヒント2を見る

power(base: 3)exp を省略しているのでデフォルト値 2 が使われます。

実際に動かしてみよう

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

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

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