4

假设我在 Ruby 中有一个类:

class Test
  def method(arg1, arg2)
    return arg1+arg2
  end

  memoize :method
end

我想记住它的结果。因此,出于调试目的,我修改了这样的类:

class Test
  def method(arg1, arg2)
    puts 'sth to make sure the method was executed'
    return arg1+arg2
  end
  ...
end

并编写了一个使用相同参数调用该方法的测试,以查看输出了什么……而且该方法没有被记忆。这样做的正确方法是什么?

4

2 回答 2

8

memoize :method在类体内,记忆方法Test.method。但是,您想记住实例方法Test#method。为此,请使用memoize :methodinsideTest的初始化方法。(确保首先包含Memoize模块Test)。

于 2010-07-14T20:15:55.503 回答
0

有一个关于元编程的截屏视频,其中包含几个用于记忆的示例:

http://www.pragprog.com/screencasts/v-dtrubyom/the-ruby-object-model-and-metaprogramming(第 5 集:九个例子)

代码:

http://media.pragprog.com/screencasts/v-dtrubyom/code/v-dtrubyom-v-05-code.tgz

于 2010-07-14T20:15:31.090 回答