【发布时间】:2016-02-16 11:45:38
【问题描述】:
有一个协议 Printable 和一个来自第 3 方的 struct 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 结构的情况下有没有其他解决方案。
【问题讨论】: