gpt4 book ai didi

ruby - 在 Ruby 中,如何从数组中生成散列?

转载 作者:数据小太阳 更新时间:2023-10-29 06:19:37 25 4
gpt4 key购买 nike

我有一个简单的数组:

arr = ["apples", "bananas", "coconuts", "watermelons"]

我还有一个函数 f,它将对单个字符串输入执行操作并返回一个值。此操作非常昂贵,因此我想将结果存储在哈希中。

我知道我可以用这样的东西制作所需的散列:

h = {}
arr.each { |a| h[a] = f(a) }

我想做的是不必初始化 h,这样我就可以这样写:

h = arr.(???) { |a| a => f(a) }

可以吗?

最佳答案

假设你有一个名字很有趣的函数:“f”

def f(fruit)
fruit + "!"
end

arr = ["apples", "bananas", "coconuts", "watermelons"]
h = Hash[ *arr.collect { |v| [ v, f(v) ] }.flatten ]

会给你:

{"watermelons"=>"watermelons!", "bananas"=>"bananas!", "apples"=>"apples!", "coconuts"=>"coconuts!"}

更新:

如评论中所述,Ruby 1.8.7 为此引入了更好的语法:

h = Hash[arr.collect { |v| [v, f(v)] }]

关于ruby - 在 Ruby 中,如何从数组中生成散列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2943422/

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