【问题标题】:Ruby2.0: What is the difference between Ruby Refinements and Monkeypatches?Ruby2.0:Ruby Refinements 和 Monkeypatches 有什么区别?
【发布时间】:2015-11-06 00:23:45
【问题描述】:

无论哪种方式,我都可以完成一些简单的任务,

改进

module StringRefinements
  refine String do
    def do_something
      "bla bla bla..."
    end
  end
end

所以,无论StringRefinements 模块是using,我都可以使用do_something 方法。

猴子补丁

class String
  def do_something
    "bla bla bla..."
  end
end

我想知道Ruby的新概念RefinementsMonkeypatch之间的区别。与Monkeypatch相比,使用Refinements有什么优势?

【问题讨论】:

  • Refinements 文档的前两段是否没有回答您的问题?
  • @CarySwoveland - 是的。我正在尝试这个新概念,并试图了解使用 Refinements 的更多优点和缺点。还有更多要了解的内容。无论如何感谢您建议 Doc。

标签: ruby refinements


【解决方案1】:

优化和猴子补丁最显着的区别是猴子补丁会更改应用程序中的每个实例。当您添加一个原本不存在的方法时,这可能不是问题,但是当您重新定义现有方法时,它很容易打破代码中其他地方的预期。

当您使用细化时,行为仅在您使用using 方法激活细化时才会改变。这更安全,因为您更改的方法不会“泄漏”到您的其余代码(或依赖项)中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-06
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 2014-08-05
    • 2010-12-16
    相关资源
    最近更新 更多