1

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()
    }

}

さまざまなエラーが発生しました: 2 番目のエラー画像

タイプと変数を関連付けてプロトコルを作成し、このエラーを回避するにはどうすればよいですか?

4

1 に答える 1