0
は考えてみましょう:switch文を使用せずにenum値が特殊なケースかどうかをテストできますか?
enum Test {
case foo
case bar
case baz
case etc
}
var test: Test = ...
私は列挙型は特にbar
であるかどうかをテストしたいと思います。私は、switchステートメントを使用することができます。
switch test {
case .bar:
doSomething()
default:
break
}
私が代わりにif
を使用することができればそれははるかに滑らかな印象になります:
if test == .bar {
doSomething()
}
しかし、私は何かが欠けていない限り、それをする方法はありません。
Binary operator '==' cannot be applied to two 'Test' operands
が可能これは、そうでない場合は、この意図的な言語の設計上の決定でしたか? Test`は、任意の関連する値を持っていない `として
あなたのコードは罰金コンパイル
if-case
オペランドを使用することができます。実際のコードを表示してください。 – Hamish実際のコードで 'Test'を実行すると、実際に値が関連付けられています - [Swiftで関連付けられた値を無視して関連する値と列挙型を比較する方法は?](http://stackoverflow.com/q/31548855/2976878) )。 [関連する値を持つスウィフト列挙型の等価性をテストする方法]も参照してください。(http://stackoverflow.com/q/24339807/2976878) – Hamish
@Hamish:申し訳ありませんが、実際のコードには値が関連付けられていることがあります。しかし、私は比較しないものと比較しようとしています。 'baz'と' etc'には値がありますが、 'foo'と' bar'は値を持っていないとします。 – user280993