为什么splat在数组定义中使用?

uzo*_*uzo 5 ruby splat

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在这里有不同的含义吗?

Dig*_*oss 5

它为catch创建了一个单独的平面数组

我不确定是否有人完全理解splat运算符.很多时候它会删除一个级别的"数组",但它不会删除最后一级.

至少可以在这种情况下得到它.它为catch参数创建单个级别的数组,无论catch是单个数字还是数字数组.

>> t = [*404]
=> [404]
>> t = [*[404,405,406]]
=> [404, 405, 406]
Run Code Online (Sandbox Code Playgroud)