У меня есть перечисление:
enum E {
case A, B, C(Int)
}
let a: E = .A
Здесь, как бы я проверил, если a
равно .B
if case .B = a {
// works fine
}
Но как я могу проверить противоположное условие? (a
не равно .B
)? Вот что я пробовал:
if case .B != a { // Variable binding in a condition requires an initializer
// ...
}
if !(case .B = a) { // Expected ',' separator
// ...
}
Конечно, я мог бы сделать это следующим образом:
if case .B = a {
// ...
} else {
// put your code here
}
но это неудобно, а также с помощью оператора switch
. Есть ли лучшие варианты?
РЕДАКТИРОВАТЬ: Предлагаемое решение @Greg работает, если случаи не имеют связанных значений, но если они выполняют оператор ==
, необходимо перегрузить. Извините, что не разъяснял это в первую очередь.