В дополнение к двум другим правильным ответам, если вы сделаете Seat
Equatable
, вы можете сравнить с ==
для случаев, у которых нет связанного значения:
enum Seat: Equatable {
case middle
case window
case aisle(Int)
}
let m : Seat = .middle
let w : Seat = .window
let a : Seat = .aisle(5)
let seats = [m,w,a]
for seat in seats {
if seat == .middle {
print("middle")
}
else if seat == .window {
print("window")
}
else if case .aisle(let row) = seat {
print("able to let row be the associatedvalue of seat; its value is: \(row)")
}
}
Примечание: Я также переписал последний случай как if case .aisle(let row) = seat
, что, по-моему, делает let привязку более ясной, когда существует только одна переменная для привязки.