繁体   English   中英

覆盖从父类继承的依赖 gem 类

[英]Overwriting a dependency gem class which inherits from a parent class

覆盖从父类继承的依赖 gem 类

如果我使用的是blah gem,并且这个 gem 有一个名为foo的类,它继承自bar 但是我想在这个 gem 上更改这个类。 有没有办法做到这一点,我已经看到了覆盖 gems 类上的方法但不覆盖实际类的方法。

例如。

我要覆盖的类如下:

class foo < bar
  def some_method
  end

  def another_method
  end
end

我想如何覆盖这个类:

class foo < not_bar
  def a_different_some_method
  end

  def a_different_another_method
  end
end

不,如果不基本上重写子类,您实际上无法更改父类。 如果每个类中只有两个方法可能没问题,但 Ruby 类使用单继承,因此您不能在不重新定义的情况下将子类重新分配给不同的超类。 但是,您可以执行以下任一操作:

  1. 重新打开类并重新定义其方法。
  2. 预先添加一个模块以重新定义现有方法的行为。
  3. 添加或修改单例类或该类的单例实例的方法。
  4. 如果您的类是从Delegator继承的,您可以使用#__setobj__更改委托类。

由于您还没有真正定义用例,因此很难判断哪种方法最适合您。 但是,一旦定义了父类,它就会保持定义状态,因此您必须以另一种方式尝试做任何事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM