有一个 Printable 协议和一个来自第三方的 Printer 结构体。
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协议和Printer结构。