Ruby:"upserting" 散列中数组值的更惯用方式
Ruby: more idiomatic way of "upserting" an array value in a hash
我有一个人的散列,其中每个人都有一个值数组。
如果散列中不存在某个人,我想创建一个具有值的新数组,并将其添加到散列中。如果它们确实存在,我想找到相应的数组并将项目添加到其中。
对于如此简单的操作(基本上是 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
我有一个人的散列,其中每个人都有一个值数组。
如果散列中不存在某个人,我想创建一个具有值的新数组,并将其添加到散列中。如果它们确实存在,我想找到相应的数组并将项目添加到其中。
对于如此简单的操作(基本上是 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