问题:
从基本实现中的函数调用时,是否有任何方法可以使Swift选择特定于类型的替代?
上下文:
我正在尝试解决/解决另一个问题(如果协议方法在通用类上,则Swift方法的实现是不可见的),并且我试图通过委派闭包参数来解决该问题
我希望我可以在类型受限的类扩展中使用方法实现,以便为给定泛型类的不同类型提供不同的实现。不过,我看到的是,仅在直接调用方法时才使用扩展实现,而从类中的另一个方法中直接调用方法时才使用。是否可以解决此问题,我可以使用其他任何方法?
class Fubar<T, U> {
init() {
doSomething()
doSomethingDynamic()
}
func fromFunction() {
doSomething()
doSomethingDynamic()
}
func doSomething() {
print("Base implementation doSomething")
}
@objc dynamic func doSomethingDynamic() {
print("Base implementation doSomethingDynamic")
}
@objc dynamic func callDirectly() {
print("Base implementation of callDirectly")
}
}
extension Fubar where U == String {
func doSomething() {
print("U is a string!")
}
func doSomethingDynamic() {
print("U is a string!")
}
func callDirectly() {
print("U is a String!")
}
}
let fubar = Fubar<Int, String>()
fubar.callDirectly()
fubar.fromFunction()
我真正得到的是:
Base implementation doSomething
Base implementation doSomethingDynamic
U is a String!
Base implementation doSomething
Base implementation doSomethingDynamic
我希望得到的是
我希望初始化程序将调用扩展中定义的类型特定的替代,而不是通用的基本实现。
谢谢!