В Swift перечисление со связанными значениями — это мощная функция, позволяющая связывать дополнительные данные с каждым случаем перечисления. Вот несколько методов и приемов, которые вы можете использовать с перечислениями Swift со связанными значениями:
-
Определение перечисления со связанными значениями:
enum MyEnum { case case1(Int) case case2(String) case case3(Double, Bool) }
-
Извлечение связанных значений с использованием сопоставления с образцом:
let value = MyEnum.case1(42) switch value { case .case1(let intValue): print("Associated value: \(intValue)") case .case2(let stringValue): print("Associated value: \(stringValue)") case .case3(let doubleValue, let boolValue): print("Associated values: \(doubleValue), \(boolValue)") }
-
Использование операторов if case:
if case let .case1(intValue) = value { print("Associated value: \(intValue)") }
-
Создание функций, принимающих перечисления со связанными значениями:
func processEnumValue(_ enumValue: MyEnum) { switch enumValue { case .case1(let intValue): // Process intValue case .case2(let stringValue): // Process stringValue case .case3(let doubleValue, let boolValue): // Process doubleValue and boolValue } }
-
Добавление методов и вычисляемых свойств в перечисления:
enum MathOperation { case addition(Int, Int) case subtraction(Int, Int) func performOperation() -> Int { switch self { case .addition(let a, let b): return a + b case .subtraction(let a, let b): return a - b } } }
-
Использование перечислений со связанными значениями в коллекциях:
let myArray: [MyEnum] = [.case1(10), .case2("Hello"), .case3(3.14, true)] for case let .case1(intValue) in myArray { // Process intValue }