Невозможно передать частично построенные перечисления в функцию.Частично построенные перечисления не являются допустимыми значениями, и они работают только при сопоставлении с шаблоном, потому что у компилятора есть конкретное значение для работы - с правой стороны шаблона.
При этом можно легко переписатьваши функции лучше, более быстрые версии.
Во-первых, вам не нужно isPresent
, вы можете просто использовать содержит:
typesPresentAtMyParty.contains { $0 == .flying }
typesPresentAtMyParty.contains { if case . wheeled = $0 { return true } else { return false } }
Аналогично, isWheeled
может быть сокращено (и переименован для лучшей семантики):
func isWheeled(_ carType: CarType) -> Bool {
if case . wheeled = carType { return true } else { return false }
}
, который может быть передан в contains
:
let hasWeeled = typesPresentAtMyParty.contains(where: isWheeled)