def initialize(apps, catch=404)
@apps = []; @has_app = {}
apps.each { |app| add app }
@catch = {}
[*catch].each { |status| @catch[status] = true }
end
Run Code Online (Sandbox Code Playgroud)
在Rack :: Cascade的这个方法splat(*)中,[*catch]代码服务的目的是什么?
我认为在方法参数中使用了一个splat来指示何时你将有一个未指定数量的参数.
splat在这里有不同的含义吗?
我不确定是否有人完全理解splat运算符.很多时候它会删除一个级别的"数组",但它不会删除最后一级.
至少可以在这种情况下得到它.它为catch参数创建单个级别的数组,无论catch是单个数字还是数字数组.
>> t = [*404]
=> [404]
>> t = [*[404,405,406]]
=> [404, 405, 406]
Run Code Online (Sandbox Code Playgroud)