1

私は基本的に、これを行うための最も慣用的な方法を知りたいです:

@var ||= lambda {
  #some expression here to generate @var
}.call
4

1 に答える 1

1

複数行ブロックを使用して、この種のメモ化を実現できます。

@result ||= begin
   # The return value in here will be assigned to @result.
end

この構文は、2 つの方法に分けることができます。

def result
  @result ||= generate_result
end

def generate_result
  # Do the heavy lifting here
end

編集これらのstackoverflowの回答も役立つ場合があります。

于 2013-04-03T20:18:41.593 に答える