Sobes.tech
Back to questions
Junior
101
questionbank

Какие существуют кейсы в перечислении (enum)?

Sobes Copilot

Get answers in real time

Answer from AI

sobes.tech AI

Существуют следующие кейсы в перечислении:

  • Raw-value кейсы: Ассоциируются с конкретным значением базового типа (Int, String, Character, Float). Значения задаются явно или генерируются автоматически для Int и String.

    enum CompassPoint: String {
        case north = "N"
        case south //rawValue не указан, по умолчанию будет "south"
        case east = "E"
        case west = "W"
    }
    let direction = CompassPoint.north.rawValue // "N"
    
  • Associated-value кейсы: Могут иметь связанные значения любых типов, которые предоставляют дополнительный контекст или данные. Не имеют базового типа и raw-value.

    enum Barcode {
        case upc(Int, Int, Int, Int)
        case qrCode(String)
    }
    let productBarcode = Barcode.upc(8, 85909, 51226, 3)
    
  • Recursive кейсы: Помечаются ключевым словом indirect и позволяют перечислению иметь связанные значения того же типа перечисления. Используются для представления рекурсивных структур данных, таких как деревья.

    indirect enum ArithmeticExpression {
        case number(Int)
        case addition(ArithmeticExpression, ArithmeticExpression)
        case multiplication(ArithmeticExpression, ArithmeticExpression)
    }
    let five = ArithmeticExpression.number(5)
    let four = ArithmeticExpression.number(4)
    let sum = ArithmeticExpression.addition(five, four)
    let product = ArithmeticExpression.multiplication(sum, ArithmeticExpression.number(2))