Ruby のキーワード引数とは
Ruby のキーワード引数について、
キーワード引数とは
- Ruby2.0から導入された
- 引数のデフォルト値を設定できる
- 引数を渡す順番を気にしなくてよい
などの特徴があります
では簡単な例を
デフォルトとは違う値を入れた場合
def test(a, b:2, c:3) p a + b + c end test(1, b:2, c:4) # => 7
指定した引数がしっかり渡されています。
引数を指定しなかった場合
def test(a, b:2, c:3) p a + b + c end test(1, b:2) # => 6
デフォルトの値が指定されています。
引数の順番なんか関係ない
def test(a, b:2, c:3) p a + b + c end test(1, c:3, b:2) # => 6
キーで指定しているため、順番は関係ありません。
デフォルト値は必須?
def test(a, b:2, c:, d:4) p a + b + c + d end test(1, b:2, c:3, d:4) # => syntax error, unexpected ','
デフォルト値はなくても良いとのことでしたが、
自分の環境(ruby2.0)ではデフォルト値は必須のようでした。
最後はキーワード引数じゃなきゃだめ
def test(a, b:2, c:3, d) p a + b + c + d end test(1, b:2, c:3, 5) # => syntax error, unexpected tIDENTIFIER
キーワード引数の後ろに
普通の引数を置くとエラーになります
ちょっと小技
def test(a, b:2, c:3, **d) p a + b + c + d[:hoge] + d[:fuga] end test(1, b:2, c:3, hoge: 10, fuga: 20) # => 36
引数の最後に**引数を設定することで、
設定していないキーワード引数を全て
ハッシュで取得し、エラーを出さなくなります。
こちらもどうぞ