Ruby 引数をハッシュで渡す

Rubyのメソッドに引数を渡す時に、ハッシュで値を渡すにはどうしたらいいのか調べてみました。

結論

メソッドの引数をキーワード引数で定義します。次のような感じです。

def something( arg1:, arg2: "good")

arg1はデフォルト値無しの引数です。arg2はデフォルト値が”hello”の引数です。

このメソッドを呼ぶには次のようにキーと値を指定して渡します。

something( arg1: "http://example.com", arg2: "hello world!" )

渡す順番は気にせずにいけます。次のように始めにarg2を渡しても問題無いです。

something( arg2: "hello world!", arg1: "http://example.com" )

メリット

キーワード引数にしたときのメリットは、次のような感じです。

  • 引数の順番を気にせずに渡せます。
  • 何を渡そうとしているのかが分かりやすくなります。

次のように普通のメソッドだと、引数のfalseが何を意味しているのか、ぱっと見だと分かりづらいですが、

normal_method( false )

ハッシュにすると、optionfalseを指定しているんだなと、少し分かりやすくなります。

keyword_method( option: false )