これを理解する最良の方法は、で何が起こっているかを調べることだと思いますirb
。
それでは、空のハッシュを初期化しましょう@catch
:
>> @catch = {}
=> {}
>> @catch.class
=> Hash
catch
次に、パラメータがデフォルト値の404
:になったらどうなるか見てみましょう。
>> catch=404
=> 404
>> [*catch].each { |status| @catch[status] = true }
=> [404]
>> @catch[404]
=> true
これにより、何が起こっているのかをよりよく理解できます。演算子が応答のsplat
作成に使用されていることがわかります。Hash
応答番号はaとして使用され、key
trueは。として設定されますvalue
。したがって、キャッチするアイテムの数に関係なく、を作成できHash
ます。
>> catch=[404, 301, 302, 303, 403]
=> [404, 301, 302, 303, 403]
>> [*catch].each { |status| @catch[status] = true }
=> [404, 301, 302, 303, 403]
>> @catch
=> {302=>true, 303=>true, 403=>true, 404=>true, 301=>true}
これがお役に立てば幸いです。これが私を少し助けてくれたリンクです:
http://theplana.wordpress.com/2007/03/03/ruby-idioms-the-splat-operator/