【发布时间】:2016-03-21 03:29:34
【问题描述】:
我有一个通用协议,它有一个返回通用参数的方法。该协议有两种实现,它们都将字符串作为返回类型。我想要一种方法来构建类似于基于某些参数的类集群的特定实例。该方法约束了泛型类型但尝试返回时出错:
“无法将StringReturn类型的返回表达式转换为返回类型T”
protocol GenericProtocol {
typealias ReturnType
func doSomething() -> ReturnType
}
struct StringReturn : GenericProtocol {
func doSomething() -> String {
return "first"
}
}
struct AnotherStringReturn : GenericProtocol {
func doSomething() -> String {
return "another"
}
}
func build<T : GenericProtocol where T.ReturnType == String>(param: String) -> T {
if .. {
return StringReturn()
} else {
return AnotherStringReturn
}
}
【问题讨论】:
标签: swift generics protocols opaque-types