キーワード引数を使ってみる

キーワード引数とは

メソッドの引数に名前(キーワード)を付けることができる機能です。
名前を付けることで、引数の意味がわかりやすくなったり、引数の順番を意識しなくても良くなります。

キーワード引数を使ってメソッドを定義してみる

今回はself_introductionという自己紹介を出力してくれる、メソッドを定義します。

def self_introduction(name:, age:, sex:)
  puts "私の名前は#{name}です"
  puts "#{age}歳の#{sex}です"
end

self_introductionメソッドを呼び出してみます。

self_introduction(name: '太郎', age: 20, sex: '')
=>私の名前は太郎です
  20歳の男です

f:id:maru877:20170706090829p:plain

次に引数の順番を変えて、self_introductionメソッドを呼び出してみます。

self_introduction(sex: '', age: 20, name: '太郎')
=>私の名前は太郎です
  20歳の男です

f:id:maru877:20170706091306p:plain
順番を変更しても、処理結果は変わりません。

メソッド定義の段階でキーワードにデフォルト値を設定することもできます。

# キーワードにデフォルト値を設定する
def self_introduction(name: '名無し', age: 'n', sex: '?')
  puts "私の名前は#{name}です"
  puts "#{age}歳の#{sex}です"
end

# 引数を渡さずに、呼び出す
self_introduction
=>私の名前は名無しです
  n歳の?で

f:id:maru877:20170706092646p:plain

ちなみにデフォルト値を設定せずに、引数を渡さない場合は、
ArgumentErrorが発生するのでご注意を。
f:id:maru877:20170706093035p:plain

このようにキーワード引数を使うことによって、 引数の数が多くなってもコードの可読性を保つことができます。