キーワード引数
メリット
- 引数の順番を気にしなくていい
- 引数が何を指しているのかわかりやすい
引数にデフォルト値を与える
def greet(name, message = 'Hello')
"#{message}, #{name}さん"
end
# messageを指定しないとデフォルト値がそのまま出力される
greet('Kato')
# => Hello, Katoさん
# デフォルト値を変更
greet('Kato', 'Hi')
# => Hi, Katoさん
# 引数の順番を逆にすると意図してない動きをする
greet('Hi', 'Kato')
# => Kato, Hiさん
キーワード引数を使う
def greet(name: '名無し', message: 'Hello')
puts "#{message}, #{name}さん"
end
# 引数指定なし
greet
# => hello, 名無しさん
# nameのみ指定
greet(name: 'Kato')
# => Hello, Katoさん
# messageのみ指定
greet(message: 'Hi')
# => Hi, 名無しさん
# name, messageともに指定
greet(name: 'Kato', message: 'Hi')
# => Hi, Katoさん
# 引数の順番を逆にする
greet(message: 'Hi', name: 'Kato')
# => Hi, Katoさん
キーワード引数はシンボルと同じじゃないの?と思った人はこちら
参考
おまけ
「デフォルト引数」という言葉が公式なのか微妙だった