有来自第 3 方的协议(protocol) Printable 和结构打印机。
protocol Printable {}
struct Printer {
static func print<T>(object: T) -> String {
return "T"
}
static func print<T: Printable>(object: T) -> String {
return "Printable"
}
}
现在我正在做一个通用的
struct Generic<T> {
var args: T
func display() {
print(Printer.print(args))
}
}
和两个结构
struct Obj {}
struct PrintableObj: Printable {}
var obj = Generic(args: Obj())
var printableObj = Generic(args: PrintableObj())
当我在它们两个上调用显示函数时。
obj.display()
显示 T
printableObj.display()
显示 T 但我希望它打印"Printable"
我能想到的一个解决方案是使用两种不同的泛型
struct Generic<T>
struct PrintableGeneric<T: Printable>
在不改变 Printable 协议(protocol)和 Printer 结构的情况下,是否还有其他解决方案。
最佳答案
static func print<T>(object: T) -> String {
if object is Printable {
return "Printable"
} else {
return "T"
}
}
关于swift - 通用方法覆盖不能快速工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35431712/