我有一个示例类,其中包含特定类型的自定义实现:
class Test<T> {
fileprivate var v : T
init (_ val : T) { v = val }
func t() -> T { print("Default. \(T.self)"); return v }
}
extension Test where T == UInt8 {
func t() -> T { print("Specific. \(T.self)"); return v }
}
样品使用:
_ = Test<UInt8>(10).t() // Specific. UInt8
_ = Test<Int>(5).t() // Default. Int
现在我试图遍历这个功能
func call<T>(t type: T.Type) -> T {
return Test<T>(8).t() // 'Int' is not convertible to 'T'
}
_ = call(t: UInt8.self)
_ = call(t: Int.self)
如果方法返回通用值,如何解决此错误或如何使用协议?