开发者社区> 问答> 正文

在Ruby中,如何从数组中生成哈希?

我有一个简单的数组:

arr = ["apples", "bananas", "coconuts", "watermelons"] 我也有一个函数f,它将对单个字符串输入执行一个操作并返回一个值。该操作非常昂贵,因此我想在哈希中记住结果。

我知道我可以用以下方式进行所需的哈希:

h = {} arr.each { |a| h[a] = f(a) } 我想做的就是不必初始化h,这样我就可以编写如下代码:

h = arr.(???) { |a| a => f(a) } 能做到吗? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 20:39:47 528 0
1 条回答
写回答
取消 提交回答
  • 假设您有一个函数,函数名称为:“ 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)] }]

    2020-02-08 20:39:59
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载