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 に答える