Ruby1.9までの慣習、擬似キーワード引数
キーワード引数のメリットを表す例として、Rubyメソッドの「よくある使われ方」である「擬似キーワード引数」について説明します。
一般的に、メソッドの利用パターンが複雑化してくると引数の数も増え、引数の順序を間違えずに呼び出すのが難しくなります。説明のために、以下の様な引数のごちゃごちゃしたメソッドを用意します。
こうしたメソッド定義においては、呼び出し時にたとえば次のような問題に直面しがちでした。
このように引数の順序が固定だと使い勝手が悪いため、Ruby1.9まで慣習的に使われてきたのが「擬似キーワード引数」というイディオムです。これは、必須ではない引数などを最後にハッシュとして渡し、それをメソッド内で分解、利用するものです。
*args
は任意長引数で、2個目以降の引数をすべて配列としてargsの中に格納しています。最後の要素がHashであるときはメソッド内でそれをオプションとみなして利用され、一方、オプションが指定されていない場合は ||
演算子の右側に置いたデフォルト値が使われます。
以上のようにメソッドを定義してやることで、次のようにオプション名を明示しつつ、シンプルに呼び出すことが出来ます。
次のページでは、同じ題材でキーワード引数を使った場合の書き方を示し、Ruby2.1で追加された改良点にも触れます。