Ruby:如何用记忆来装饰方法?

发布于 2024-09-09 07:37:05 字数 392 浏览 8 评论 0原文

假设我有一个 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

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

Suppose I have a class in Ruby:

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

  memoize :method
end

And I want to memoize its results. So for debug purposes I modified the class like this:

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

And wrote a test that calls the method with same args, to see what get's outputted... and well the method is not memoized. What's the correct way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

海风掠过北极光 2024-09-16 07:37:05

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

memoize :method inside the class body, memoizes the method Test.method. However you want to memoize the instance method Test#method. To do this use memoize :method inside Test's initialize method. (Make sure you include the Memoize module into Test first).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文