arrays - Ruby: "upserting"散列中数组值的更惯用方式

标签 arrays ruby coding-style hashmap upsert

我有一个人的散列,其中每个人都拥有一组值。

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

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

people = {}

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

最佳答案

ruby 中的哈希可以使用代码块构建,该代码块在首次访问元素时执行。在 ruby​​ 中重写代码的惯用方式是:

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

people[name] << item

关于arrays - Ruby: "upserting"散列中数组值的更惯用方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31030675/

相关文章:

c - 在 C 中调整二维数组的大小

java - 字节数组的声明

在 C 中转换指向 int 的指针

ios - 从另一个类访问 NSarray 值

ruby - 跳过扩展名为 pdf、zip 的网页,从 Anemone 中爬行

Ruby dig set - 使用 Hash#dig 分配值

objective-c - cocoa 风格 : using polymorphism in collections

haskell - 使用长 where 语句是不好的编码风格吗?

java - 如何在java编码中添加另一个圈

ruby - Ruby 中是否有 "&& Equals"运算符