私は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()
}
何らかの理由で、コンパイラはエラーを示しています 可能ということですどのように?私は何か間違っているのですか?バグですか?既知のもの?私が試した何
:その関連付けられているタイプの
定義さtypealias:
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()
}
}
はどのようにして、関連するタイプと変数とのプロトコルを作成し、このエラーを回避する必要がありますか?
@Hamishええ、確かに、あなたは正しい –