ruby - Hash.new{[]} - 它有什么问题吗?

标签 ruby hashmap block

查看@mu is too short's answer to another question ,我尝试了一种变体:

def anagrams(list)
  h = Hash.new{ [] }
  list.each_with_object(h){ |el, h| h[el.downcase.chars.sort] <<= el }
end

anagrams(['cars', 'for', 'potatoes', 'racs', 'four','scar', 'creams', 'scream'])

(盲目地假设会有一个 <<= 运算符。)它有效,但是 Hash.new{[]}根本不是惯用语——我还没有找到任何例子。有什么问题吗?

最佳答案

这样的代码不常用的原因是它没有将其返回值插入散列中,因此用户需要调用 Hash#[]= 将对象插入散列中(这就是你在这里重新做:hash[key] <<= val 只是 hash[key] = hash[key] << val) 的缩写

关于ruby - Hash.new{[]} - 它有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9549702/

相关文章:

ruby-on-rails - 从数据库中获取所有 user.name rails

java - 设备重启后检索HashMap

clojure - 如何获取 clojure 数组映射来维护 assoc 之后的插入顺序?

linux - CPU如何从磁盘读取数据?

html - UL 导航栏中的 anchor 在链接本身之外不可点击

ruby - 如何在 Ruby on Rails 中将数组从 View 传递到 Controller

ruby - 如何在ruby中提取方括号内的内容

ruby - 使用 Ruby 编辑 XML

python - Python 中 `dict` 的内存分配是如何工作的?

ruby - 有没有办法避免 Ruby 中的重复 block ?