我正在使用 Xcode 7.3 和 Swift 2.3。我在使用具有变量的关联类型的协议时遇到困难。看例子:
protocol SomeProtocol {}
class SomeProtocolImpl: SomeProtocol {}
protocol ProtocolWithAssociatedType {
associatedtype T: SomeProtocol
var variable: T { get }
}
class TestClass: ProtocolWithAssociatedType {
var variable: SomeProtocol = SomeProtocolImpl()
}
出于某种原因,编译器显示错误: 这怎么可能?难道我做错了什么?它是一个错误吗?一个已知的?
我试过的:
为该关联类型定义类型别名:
class TestClass: ProtocolWithAssociatedType {
typealias O = SomeProtocol
var variable: SomeProtocol = SomeProtocolImpl()
}
不。
改为使用方法:
protocol SomeProtocol {}
class SomeProtocolImpl: SomeProtocol {}
protocol ProtocolWithAssociatedType {
associatedtype T: SomeProtocol
func someMethod() -> T
}
class TestClass: ProtocolWithAssociatedType {
typealias T = SomeProtocol
func someMethod() -> SomeProtocol {
return SomeProtocolImpl()
}
}
我应该如何创建具有关联类型和变量的协议并避免此错误?