缓存哈希值的更快捷方式

时间:2015-09-05 12:27:38

标签: ruby hash default-value

Hash.new占用一个块时,可以按如下方式创建一个缓存:

cache = Hash.new do |hash, key|
  hash[key] = expensive_calculation(key)
end

为什么这么复杂?

cache = Hash.cache do |key|
  expensive_calculation(key)
end

这样的版本会更快,因为只有一个参数传递给块。根据我的经验,这会产生很大的不同。

1 个答案:

答案 0 :(得分:2)

您的提议暗示每个密钥只评估一次该块,并为密钥缓存其值。

但是,这不是使用此功能的唯一方法。人们可能想要为同一个密钥多次计算该值。在您的提案中,无法完成。它缺乏灵活性。