在 Python中,我可以轻松地修饰方法,以便记住它们的结果: def store(self): a = line1() b = line2(a) return line3(b) = from lazy import lazy@lazydef store(self): a = line1() b = line2(a) return line3(b) Ruby中是否有一些
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
但是,如果在多线程环境中使用此代码,则存在一些重要问题,这就是为什么有宝石可以管理它并确保您的惰性初始化程序只运行一次,如果这是一个问题.