【发布时间】:2020-12-18 07:08:51
【问题描述】:
我正在尝试创建一个扩展来调试一个类,以便在您输入某些方法时打印一些输出。我希望能够在许多不同的类中重用此代码,并且我希望使这些类不受此调试代码的影响,同时也不重复代码(保持 DRY)。这就是为什么我想使用这样的扩展:
class A: ... {
override func myMethod() {
super.myMethod()
print("hello A")
}
}
extension A {
override func myMethod() {
print("hello extension")
}
}
我希望在调用 myMethod() 时看到这个
hello extension
hello A
(或者反过来,我不在乎)
但问题是编译器说的是"myMethod() has already been overridden here"
有什么想法吗?
【问题讨论】:
-
类的主体和扩展不能同时提供覆盖。编译器将如何决定选择哪个?
-
好吧,也许扩展程序可以调用
self.myMethod()而不是super.myMethod()或类似的东西。或者扩展的超级意味着类......无论如何。任何想法如何做到这一点? -
您还应该提供重用它的方式...
标签: swift