class Curious
def calculation
def calculation
@retrieved_value
end
@retrieved_value = #some kind of intensive process
end
end
执行上述操作时,外部方法将在第一次运行,而内部方法将提供后续值。通过仅@retrieved_value ||= #some kind of intensive process
的单一非嵌套方法执行此操作的优点或缺点是什么?
答案 0 :(得分:2)
您正在重新定义calculation
课程的Curious
方法。这将影响其他实例:
a = Curious.new
a.calculation # calls "outer" method, this sets @retrieved_value
a.calculation # calls "inner" method
b = Curious.new
b.calculation # calls "inner" method, @retrieved_value not set
答案 1 :(得分:1)
IMO没有什么优势,乍一看有点不透明。
根据密集过程的性质,可能存在一些范围优势。