私はassociatedtype
と、このコードがあります。スウィフト推論のタイプはここでどうしてですか?
protocol ATState {
associatedtype Event
func nextState(event:Event) -> Self?
}
enum ATPlayerState:ATState {
case weak, powerful, poweringUp, poweringDown
func nextState(event: String) -> ATPlayerState? {
return nil
}
}
をしかし、コンパイル時にエラーがあります:「ATPlayerStateがプロトコルに準拠していないがATState」。私が追加した場合、typealias Event = <Type>
、を追加する修正があります:typealias Event = String
、それはエラーを修正します。しかし、私は理解していないなぜ私はこれを行う必要があります!
私はthe documentationを読んだとき、私がいることがわかり:スウィフトの型推論のおかげで、あなたが実際にIntStackの定義の一部としてのIntの 具体的なitemTypeに宣言する必要はありません
。
また、例ではエイリアスは使用されず、メソッドを実装するだけです。
ここで関連タイプを推論するべきではありませんか?
ありがとうございました!
これは既知のバグです、 'Self'リターンがculpretです - [SR-2746](https://bugs.swift.org/browse/SR-2746)を参照してください。単に対応する型に 'typealias'を追加するだけで、関連する型を明示的に満たすことができるのは最も簡単な回避策です。 – Hamish
@ハミッシュああありがとう!私は何かを誤解していたと思った...すぐに修正されることを願っている!! –