Swift Enum со связанными значениями: методы и приемы работы со связанными данными

В Swift перечисление со связанными значениями — это мощная функция, позволяющая связывать дополнительные данные с каждым случаем перечисления. Вот несколько методов и приемов, которые вы можете использовать с перечислениями Swift со связанными значениями:

  1. Определение перечисления со связанными значениями:

    enum MyEnum {
    case case1(Int)
    case case2(String)
    case case3(Double, Bool)
    }
  2. Извлечение связанных значений с использованием сопоставления с образцом:

    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)")
    }
  3. Использование операторов if case:

    if case let .case1(intValue) = value {
    print("Associated value: \(intValue)")
    }
  4. Создание функций, принимающих перечисления со связанными значениями:

    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
    }
    }
  5. Добавление методов и вычисляемых свойств в перечисления:

    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
        }
    }
    }
  6. Использование перечислений со связанными значениями в коллекциях:

    let myArray: [MyEnum] = [.case1(10), .case2("Hello"), .case3(3.14, true)]
    for case let .case1(intValue) in myArray {
    // Process intValue
    }