1
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

4

2 回答 2

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
于 2012-06-08T14:19:44.260 回答
1

IMO 没有什么优势,缺点是乍一看有点不透明。

根据密集流程的性质,可能会有一些范围界定优势。

于 2012-06-08T13:56:26.703 回答