1
我想仅使用块参数解构嵌套数据结构。在红宝石块中嵌套的命名参数解构
数据(简化本示例)是这样的:
response = [
["James", { species: "cat", age: "4" }],
["Sandy", { species: "dog", age: "7" }],
["Horse", { species: "man", age: "34" }]
]
我不能找到一个语法有效的解构此仅使用块参数。我想象它可能是这一点,嵌套阵列解构风格的命名关键字参数组合:
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
,但我喜欢有它在块参数,因为它呼吁我的优雅代码感。有任何想法吗?
我会离开一般案例让别人思考,谢谢! – inopinatus