Я думаю, что вам нужен оператор switch с «составным регистром», перечисляющим все возможные «одинаковые комбинации значений» внешнего перечисления, плюс регистр по умолчанию:
func isSameCategory(as other: SportsEvent) -> Bool {
switch (self, other) {
case (.running, .running),
(.throwing, .throwing):
return true
default:
return false
}
}
Или (атрибуция идет к@Hamish):
func isSameCategory(as other: SportsEvent) -> Bool {
switch (self, other) {
case (.running, .running),
(.throwing, .throwing):
return true
case (.running, _),
(.throwing, _):
return false
}
}
, преимущество в том, что компилятор проверяет, что все случаи покрыты.Для перечисления с n
падежами, которое составляет 2 * n
падежей в операторе switch (что лучше, чем n * n
, если вы проверили все возможные комбинации).