【问题标题】:Can I override an include directive in a class?我可以覆盖类中的包含指令吗?
【发布时间】:2019-08-02 15:00:10
【问题描述】:

我有一个如下所示的 Ruby 类:

class X
  include SomeModule
end

我可以覆盖这个X 类以不包括SomeModule吗?

【问题讨论】:

标签: ruby


【解决方案1】:

这里有一个想法。如果您不使用 SomeModule,您可以编写代码,以便仅在 需要 时才包含它。

class X
  if really_need_some_module
    include SomeModule
  end
end

类定义中的代码正在运行 Ruby 代码!你可以做出选择。这样您就可以避免在不需要时包含它。

因此不需要 backsies 或 un-include。

【讨论】:

  • "因此不需要 backsies 或 un-include" - 除非有问题的代码来自 gem 或类似的东西。
  • 是的,就像@SergioTulentsev 建议的那样,include 位于 gem 中,所以我无法真正更改该类的原始代码,只能覆盖它。
  • 很公平,但这在您的帖子中没有提到,也没有在您的示例代码中说明。
猜你喜欢
  • 1970-01-01
  • 2013-09-26
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-01
  • 2011-05-11
  • 1970-01-01
相关资源
最近更新 更多