gpt4 book ai didi

ruby - ruby block 中的嵌套命名参数解构

转载 作者:太空宇宙 更新时间:2023-11-03 18:05:41 26 4
gpt4 key购买 nike

我想仅使用 block 参数来解构嵌套数据结构。

数据(针对本例进行了简化)是这样的:

response = [
["James", { species: "cat", age: "4" }],
["Sandy", { species: "dog", age: "7" }],
["Horse", { species: "man", age: "34" }]
]

我找不到仅使用 block 参数来解构它的有效语法。我想象它可能是这样的,将嵌套数组解构风格与命名关键字参数相结合:

response.map do |name, (species:, age:)|
"#{name}: #{species}, #{age}"
end

但这会导致语法错误。

显然还有很多其他方法可以提取必要的数据,例如使用非嵌套关键字参数:

response.map do |name, data|
proc { |species:, age:|
"#{name}: #{species}, #{age}"
}.(data)
end

response.map do |name, data|
species, age = data.values_at(:species, :age)
"#{name}: #{species}, #{age}"
end

或者非常明显的

response.map do |name, data|
"#{name}: #{data[:species]}, #{data[:age]}"
end

但我喜欢将它放在 block 参数中,因为它符合我对优雅代码的感觉。有什么想法吗?

最佳答案

|name, species:, age:| 有效(因为关键字参数的处理方式)。它显然在一般情况下不起作用,但由于关键字参数的工作方式,最后一个元素是散列的数组完全对应于参数列表。

关于ruby - ruby block 中的嵌套命名参数解构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46437793/

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