Ruby キーワード引数の使い方

概要

Ruby2.0.0から追加されていた、関数のキーワード引数についての備忘録。Rubyのキーワード引数は、関数の引数にて、ハッシュ風のデフォルト値を設定し、呼び出す側ではそれを任意に上書きして呼び出すことができる。長らくRubyを使ってるのにRubyにキーワード引数があることを今まで知らなかった。

ちなみにRubyのキーワード引数は、2.0.0からの新機能なのので、1.x系を使ってる人はハッシュで代用するか2系にあげましょう。

前提

以下環境で動作確認済み

debian 8.6
ruby 2.2.2

例1 キーワード引数が1つ

say関数の引数textは、デフォルトで’World’が適用されているが、呼び出し側でハッシュっぽくtextを指定することでデフォルト値を上書きすることができる。

def say(text: 'World')
  puts "Hello #{text}"
end

say # Hello World
say() # Hello World
say(text: 'Ruby') # Hello Ruby

以下のように、上記コードをデフォルト引数で書き直すこともできるが、キーワード引数だと、呼び出し側でもtextとラベルを指定する必要があるので、引数の役割を明示することができる。

l returned 1
def say(text = 'world')
  puts "Hello #{text}"
end

say # Hello World
say() # Hello World
say('Ruby') # Hello Ruby

例2 キーワードが2つ以上

今度は、例1では固定だったHelloの部分もキーワード引数で書き換えられるようにする。下記コードのように、キーワード引数を用いることで、任意の引数に対して値を指定することができる。

def say(first_text: 'Hello', last_text: 'World')
  puts "#{first_text} #{last_text}"
end

say # Hello World
say() # Hello World
say(first_text: 'こんにちは') # こんにちは World
say(last_text: 'Ruby') # Hello Ruby
say(first_text: 'こんにちは', last_text: 'Ruby') # こんにちは Ruby

もっと知りたい

以下記事を見るとキーワード引数の他にも、引数受け渡し全般についてかなり詳しくなれる
Rubyのメソッドの引数受け渡しまとめ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です