我希望使用泛型协议类型作为函数返回类型,如下所示:
protocol P {
associatedtype T
func get() -> T?
func set(v: T)
}
class C<T>: P {
private var v: T?
func get() -> T? {
return v
}
func set(v: T) {
self.v = v
}
}
class Factory {
func createC<T>() -> P<T> {
return C<T>()
}
}
但是,这段代码编译时出现了一些错误:
是否有任何方法来实现类似的功能与Swift?
发布于 2020-05-13 07:11:53
Swift 5.1支持使用不透明类型返回关联类型。使用不透明类型,代码生成成功。参考
protocol P {
associatedtype T
func get() -> T?
func set(v: T)
}
class C<T>: P {
private var v: T?
func get() -> T? {
return v
}
func set(v: T) {
self.v = v
}
}
class Factory {
func createC<T>() -> some P {
return C<T>()
}
https://stackoverflow.com/questions/37559501
复制相似问题