gpt4 book ai didi

ruby - 为什么在这里的数组定义中使用了 splat?

转载 作者:数据小太阳 更新时间:2023-10-29 07:15:44 26 4
gpt4 key购买 nike

def initialize(apps, catch=404)
@apps = []; @has_app = {}
apps.each { |app| add app }

@catch = {}
[*catch].each { |status| @catch[status] = true }
end

在这个方法中来自 Rack::Cascade , splat(*)[*catch] 代码中的作用是什么?

我认为在方法参数中使用了 splat 来指示您何时将拥有未指定数量的参数。

splat 在这里有不同的含义吗?

最佳答案

它为 catch 创建一个平面数组

我不确定是否有人完全理解 splat 运算符。很多时候它会删除一层“arrayness”,但不会删除最后一层。

至少在这种情况下是有可能得到它的。无论 catch 是单个数字还是数字数组,它都会为 catch 参数创建单级数组。

>> t = [*404]
=> [404]
>> t = [*[404,405,406]]
=> [404, 405, 406]

关于ruby - 为什么在这里的数组定义中使用了 splat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1416777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com