ruby - 如果键存在,向散列值添加一些东西?

标签 ruby hash hashmap

我在 Ruby 中有一个哈希:

hash = Hash.new

里面有一些键值对,比如说:

hash[1] = "One"
hash[2] = "Two"

如果散列包含键 2,那么我想将“Bananas”添加到它的值中。如果散列没有键 2,我想创建一个新的键值对 2=>"Bananas"

我知道我可以通过首先使用 has_key? 检查散列是否具有 key 2 来做到这一点,然后采取相应的行动。但这需要一个 if 语句和不止一行。

那么是否有一种简单、优雅的单行代码可以实现这一目标?

最佳答案

这个有效:

hash[2] = (hash[2] || '') + 'Bananas'

如果您希望所有键都以这种方式运行,您可以使用 Ruby 的 Hash 的“默认”功能:

hash = {}
hash.default_proc = proc { '' }
hash[2] += 'Bananas'

关于ruby - 如果键存在,向散列值添加一些东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22614169/

相关文章:

python - 为什么这个函数是一个糟糕的散列函数?

ruby-on-rails - 使用载波视频上传 .MOV 文件?

ruby-on-rails - Rails 3 的良好身份验证

ruby-on-rails - 如何加快我的 Ruby/Rake 任务,该任务计算 300K 日期字符串中日期的出现次数?

结构数据中的 CSV 文件数据,用于使用 C 进行哈希处理

java - 计算 SHA 256 时出错

c++ - 并发读/写 HashMap 的最快解决方案是什么?

java - 对具有重复值的 HashMap 进行排序

java - HashMap 函数 'put' 无法正常工作 - Java

php - Apache、mod_*、PHP、Perl、Python、Ruby;向后学习