簡體   English   中英

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM