0
Swift 3.2/4のKeyPathタイプで一般的な自己参照を使用できないのはなぜですか?Swift 3.2/4 KeyPathタイプで一般的な自己参照を使用できないのはなぜですか?
例:// B
と記された行のコメントを外さない限り、以下のコードがコンパイルされます。どうして?私が理由があるとすれば、// B
と記された行は、typealias Path<T> = KeyPath<Self,T>
という文の意味で、// A
と記された行と全く同じものを意味するはずです。
ここに何か不足していますか、これはSwiftコンパイラのバグですか?
protocol Fooer {
associatedtype T
typealias Path<T> = KeyPath<Self, T>
var baz: T { get }
}
protocol FooPathContainable {
associatedtype F: Fooer
associatedtype T where F.T == T
var fooerPathA: KeyPath<F,T> { get set } // A
var fooerPathB: F.Path<T> { get set } // B <— causes compiler crash with Segmentation Fault 11
}
上記の更新されたコードサンプルを参照してください。何とか最初に貼り付けたときに、はStackOverflow iOSアプリによって削除されました。しかし、ええ、私はF.Path を使用しています。これはキーパスのタイプアリアですので、完全に動作するはずです... –
CommaToast
私はXCode9/Swift4で私のためにコンパイルしています –
あなたが提供している最新のコードサンプルはコンパイルしていますあなたのXcodeで? – CommaToast