我认为理解这一点的最佳方法是查看irb
.
所以让我们初始化一个空哈希,@catch
:
>> @catch = {}
=> {}
>> @catch.class
=> Hash
现在让我们看看当参数catch
变为默认值时会发生什么404
:
>> catch=404
=> 404
>> [*catch].each { |status| @catch[status] = true }
=> [404]
>> @catch[404]
=> true
这让我们更好地了解正在发生的事情。我们可以看到该splat
运算符正在用于构建Hash
响应。响应编号被用作 akey
并且 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/