導入
「引数を省略したら決まった値を使いたい」「引数の意味を名前で分かりやすくしたい」――そんなときに使えるのがデフォルト引数とキーワード引数です。
説明
引数に = 値 を付けると、呼び出し時に省略された場合のデフォルト値になります。
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) というメソッドを定義し、base の exp 乗を返すようにしてください(exp のデフォルトは 2)。puts power(base: 3) の結果(9)を表示してください。
ヒント1を見る
def power(base:, exp: 2) base ** exp end のように定義します。
ヒント2を見る
power(base: 3) は exp を省略しているのでデフォルト値 2 が使われます。