で関連する値を列挙例等価をテストすることがあります。これらはすべて、このエラーが発生する、悲しいことどのように私はこのように、列挙型のカップルの変数の等価性をテストしたいと思いスウィフト4
enum AnEnumeration {
case aSimpleCase
case anotherSimpleCase
case aMoreComplexCase(String)
}
let a1 = AnEnumeration.aSimpleCase
let b1 = AnEnumeration.aSimpleCase
a1 == b1 // Should be true.
let a2 = AnEnumeration.aSimpleCase
let b2 = AnEnumeration.anotherSimpleCase
a2 == b2 // Should be false.
let a3 = AnEnumeration.aMoreComplexCase("Hello")
let b3 = AnEnumeration.aMoreComplexCase("Hello")
a3 == b3 // Should be true.
let a4 = AnEnumeration.aMoreComplexCase("Hello")
let b4 = AnEnumeration.aMoreComplexCase("World")
a3 == b3 // Should be false.
error: MyPlayground.playground:7:4: error: binary operator '==' cannot be applied to two 'AnEnumeration' operands
a1 == b1 // Should be true.
~~^~~
MyPlayground.playground:7:4: note: binary operator '==' cannot be synthesized for enums with associated values
a1 == b1 // Should be true.
~~^~~
翻訳:この1のようなあなたの列挙が関連付けられている値を使用している場合は、同等のためにそれをテストすることはできません。
注.aMoreComplexCase
(および対応するテスト)が除去された場合に予想されるように、コードが動作します。
過去の人にこの問題を回避するために演算子オーバーロードを使用することを決定したように見えます:How to test equality of Swift enums with associated values。しかし、私たちはスイフト4を持っているので、もっと良い方法があるのだろうか?または、リンクされたソリューションを無効にする変更があった場合は、
ありがとうございます!
これらの回答は引き続き有効です。 https://github.com/apple/swift-evolution/blob/master/proposals/0185-synthesize-equatable-hashable.mdが実装されているとシンプルになります。 –
これは私が必要なものです。私はコードが正常に動作しています。おそらく、あなたはこのコメントを答えにする必要があるでしょう。 – MadEmperorYuri