Рассмотрим этот код:
enum Type {
case Foo(Int)
case Bar(Int)
var isBar: Bool {
if case .Bar = self {
return true
} else {
return false
}
}
}
Это грубо. Я хотел бы написать что-то вроде этого:
enum Type {
case Foo(Int)
case Bar(Int)
var isBar: Bool {
return case .Bar = self
}
}
Но такая конструкция, похоже, не существует в Swift, или я не могу ее найти.
Так как есть данные, связанные с каждым случаем, я не считаю возможным реализовать оператор ~=
(или любой другой помощник) таким образом, который эквивалентен приведенному выше выражению. И в любом случае, операторы if case
существуют бесплатно для всех перечислений и не нуждаются в ручном внедрении.
Таким образом, мой вопрос: есть ли более сжатый/декларативный/чистый/идиоматический способ реализовать isBar
, чем то, что у меня выше? Или, более прямо, есть ли способ выразить выражения if case
как выражения Swift?