覆盖从父项 class 继承的依赖项 gem class
Overwriting a dependency gem class which inherits from a parent class
覆盖从父项 class
继承的依赖项 gem class
如果我正在使用 blah
gem,并且此 gem 有一个名为 foo
的 class,它继承自 bar
。但是我想在这个 gem 上更改这个 class。有没有办法可以做到这一点,我已经看到了从 gems 覆盖 classes 上的方法但不覆盖实际 classes.
的方法
例如
我要覆盖的class如下:
class foo < bar
def some_method
end
def another_method
end
end
我想如何覆盖这个class:
class foo < not_bar
def a_different_some_method
end
def a_different_another_method
end
end
不,如果不基本上重写子class,您实际上不能更改父class。如果你在每个 class 中只有两个方法,那可能没问题,但是 Ruby classes 使用单继承,所以你不能重新分配一个 subclass 给一个不同的 superclass 而无需重新定义它。但是,您可以执行以下任一操作:
- 重新打开 class 并重新定义其方法。
- 预先添加一个模块以重新定义现有方法的行为。
- 为单例 class 或该 class 的单例实例添加或修改方法。
- 如果您的 class 继承自 Delegator,您可以将委托 class 更改为 #__setobj__。
由于您还没有真正定义用例,因此很难判断哪种方法最适合您。但是,一旦父 class 被定义,它就会保持定义状态,因此您必须以其他方式做您想做的任何事情。
覆盖从父项 class
继承的依赖项 gem class如果我正在使用 blah
gem,并且此 gem 有一个名为 foo
的 class,它继承自 bar
。但是我想在这个 gem 上更改这个 class。有没有办法可以做到这一点,我已经看到了从 gems 覆盖 classes 上的方法但不覆盖实际 classes.
例如
我要覆盖的class如下:
class foo < bar
def some_method
end
def another_method
end
end
我想如何覆盖这个class:
class foo < not_bar
def a_different_some_method
end
def a_different_another_method
end
end
不,如果不基本上重写子class,您实际上不能更改父class。如果你在每个 class 中只有两个方法,那可能没问题,但是 Ruby classes 使用单继承,所以你不能重新分配一个 subclass 给一个不同的 superclass 而无需重新定义它。但是,您可以执行以下任一操作:
- 重新打开 class 并重新定义其方法。
- 预先添加一个模块以重新定义现有方法的行为。
- 为单例 class 或该 class 的单例实例添加或修改方法。
- 如果您的 class 继承自 Delegator,您可以将委托 class 更改为 #__setobj__。
由于您还没有真正定义用例,因此很难判断哪种方法最适合您。但是,一旦父 class 被定义,它就会保持定义状态,因此您必须以其他方式做您想做的任何事情。