Sobes.tech
Junior

Enum-də hansı hallar mövcuddur?

sobes.tech Süni İntellekt

AI-dan cavab

Aşa aşağıdakı hallar qeydiyyatda mövcuddur:

  • Xam dəyər halları: Müəyyən bir əsas növ ilə əlaqələndirilir (Int, String, Character, Float). Dəyərlər açıq şəkildə təyin edilir və ya avtomatik olaraq Int və String üçün yaradılır.

    enum CompassPoint: String {
        case north = "N"
        case south // rawValue qeyd olunmayıb, standart olaraq "south" olacaq
        case east = "E"
        case west = "W"
    }
    let direction = CompassPoint.north.rawValue // "N"
    
  • Əlaqəli dəyər halları: Hər hansı növ ilə əlaqəli dəyərlərə sahib ola bilər, əlavə kontekst və ya məlumat təmin edir. Onlar əsas növ və raw-value-ya malik deyillər.

    enum Barcode {
        case upc(Int, Int, Int, Int)
        case qrCode(String)
    }
    let productBarcode = Barcode.upc(8, 85909, 51226, 3)
    
  • Rekursiv hallar: indirect açar sözü ilə qeyd olunur və enumerasiyanın eyni növ ilə əlaqəli dəyərlərə sahib olmasına imkan verir. Bu, rekursiv məlumat strukturlarını, məsələn, ağacları təmsil etmək üçün istifadə olunur.

    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))