LoginSignup
14
16

More than 5 years have passed since last update.

Rubyでデフォルト引数が複数の場合のちょっとしたTips

Last updated at Posted at 2014-07-23

概要

Rubyのデフォルト引数は、かなり便利なものだか、
複数個デフォルト引数がある場合、どうしたらよいのかをまとめてみた。

結論

ハッシュを使って渡そう

def hoge(args = {})
  args = {var1: "foo", var2: "fuga"}.merge(args)
end

内容

基本的なデフォルト引数

def hoge(var = "foo")
 p "#{var}" 
end

指定しない時はデフォルトの値を使い

hoge
=> "foo"

引数指定した場合は、その値を使う

hoge("fuga")
=> "fufa"

引数が複数ある場合

def hoge(var1 = "foo", var2 = "fuga")
 p "#{var1}_#{var2}"    
end

指定しない場合はこれでよいが…

hoge
=> "foo_fuga"

"foo_foo"と出力したい(第2引数だけ変更したい)場合

hoge("foo", "foo")
=> "foo"

デフォルト引数の恩恵が受けられない

なのでハッシュで渡す

こうしておけば

def hoge(args = {})
  args = {var1: "foo", var2: "fuga"}.merge(args)
  p "#{args[:var1]}_#{args[:var2]}"
end

指定しない場合でも。

hoge
=> "foo_fuga"

変えたい引数だけをハッシュで渡せば、
全部を指定しなくても…

hoge({var2: "foo"})
=> "foo_foo"
hoge({var1: "fuga"})
=> "fuga_fuga"

デフォルト引数が使える!

まとめ

外部API周りなど、
いろいろな引数が想定される場合には、使えるかと思います。

14
16
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
16