【发布时间】:2014-12-21 02:10:03
【问题描述】:
这个问题主要是关于 Ruby 内部的,速度可以用一个简单的基准来衡量。
在 ruby 中记忆返回值的最有效方法是什么?
我总是记住以下值:
def method
@value ||= calculate_value
end
但由于它在技术上扩展为:
@value = @value || calculate_value
我想知道每次重新执行相同分配的效率。
这样会更好吗?
def method
@value ? @value : (@value = calculate_value)
end
另外,它在不同的解释器中会发生变化吗?核磁共振、Rubinius 等。
【问题讨论】:
-
如果 calculate_value 很昂贵并且它可以返回 false 或 nil,您必须考虑类似
defined? @value ? @value : (@value = calculate_value)。 -
一个有趣的问题,我很高兴知道他的答案。如果有帮助,请不要忘记选择答案。
标签: ruby memoization