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()
}
}
タイプと変数を関連付けてプロトコルを作成し、このエラーを回避するにはどうすればよいですか?