在 Python 中,我可以轻松地修饰方法,以便它们记住它们的结果:
def store(self):
a = line1()
b = line2(a)
return line3(b)
=>
from lazy import lazy
@lazy
def store(self):
a = line1()
b = line2(a)
return line3(b)
Ruby 中是否有类似的只计算一次方法结果的习惯用法?
最佳答案
在 Ruby 中,这通常称为 memoization它采用以下天真的形式:
def store
@store ||= begin
a = line1
b = line2(a)
line3(b)
end
end
但是,如果在多线程环境中使用此代码,则存在重要的问题,这就是为什么有 gem 来管理它并确保您的惰性初始化程序只运行一次,如果这是一个问题。
关于ruby - 如何在 Ruby 中缓存方法结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40047941/