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 )
ハッシュにすると、option
にfalse
を指定しているんだなと、少し分かりやすくなります。
keyword_method( option: false )