【问题标题】:Ruby: more idiomatic way of "upserting" an array value in a hashRuby:在哈希中“更新”数组值的更惯用方式
【发布时间】:2015-09-10 21:34:10
【问题描述】:

我有一个人的散列,每个人都有一个值数组。

如果哈希中不存在一个人,我想创建一个带有值的新数组,并将其添加到哈希中。如果它们确实存在,我想找到相应的数组并将项目添加到其中。

对于如此简单的操作(基本上是 upsert),这段代码似乎有点啰嗦。有没有更惯用的写法?

people = {}

person_values = people.fetch(name, [])
person_values << item
people[name] = person_values

【问题讨论】:

    标签: arrays ruby coding-style hashmap upsert


    【解决方案1】:

    ruby 中的哈希可以使用第一次访问元素时执行的代码块来构造。 ruby 中重写代码的惯用方式是:

    people = Hash.new { |hash, key| hash[key] = [] }
    
    people[name] << item
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-07
      • 2015-09-15
      • 1970-01-01
      • 2022-01-12
      • 2020-03-11
      • 2015-08-26
      • 2017-07-08
      • 1970-01-01
      相关资源
      最近更新 更多