Oll*_*ass 2 ruby arrays coding-style hashmap upsert
我有一个人的哈希,每个人都拥有一系列的价值观.
如果散列中不存在某个人,我想创建一个带有值的新数组,并将其添加到散列中.如果它们存在,我想找到相应的数组并将项添加到它.
对于这样一个简单的操作(基本上是upsert),这段代码看起来有点啰嗦.有没有更惯用的写作方式?
people = {}
person_values = people.fetch(name, [])
person_values << item
people[name] = person_values
Run Code Online (Sandbox Code Playgroud)
小智 7
可以使用在首次访问元素时执行的代码块来构造ruby中的哈希.ruby中重写代码的惯用方法是:
people = Hash.new { |hash, key| hash[key] = [] }
people[name] << item
Run Code Online (Sandbox Code Playgroud)