49hack

見習いエンジニアが魔法使いになるまで

メソッドの引数にアスタリスクをつけると形式を指定できる

rubyのgemをいろいろ試している時に見つけたのでメモ。

methodで引数にアスタリスクを使うといい感じに値を取得することができます。

アスタリスク1つ*だと配列、アスタリスク2つ**だとハッシュを指定できます。

def foo(a, *b, **c)
  [a, b, c]
end

こうすることで、fooに引数がたくさんあったとき、引数の境界がはっきりします。

引数がなにもない場合は指定のフォーマットの空情報が入ります。

参考URLからデモコードを張っておきます。

> foo 10
=> [10, [], {}]
> foo 10, 20, 30
=> [10, [20, 30], {}]
> foo 10, 20, 30, d: 40, e: 50
=> [10, [20, 30], {:d=>40, :e=>50}]
> foo 10, d: 40, e: 50
=> [10, [], {:d=>40, :e=>50}]

OSSつくるときとかはこういうの必要ですね〜。

参考