Enumerators

// Flat Map: Flatten NEsted Collections

let month = ["janaury", "february", "march", "april", "may", "june", "july", "august", "septemeber", "october", "november", "december"]

func semester(for month: String) -> String {
    switch month {
    case "august", "septemeber", "october", "november", "december":
        return "autumn"
    case "january", "february", "march", "april", "may":
        return "spring"
    default:
        return "Not in the school year"
    }
}

let typeOfSemester = semester(for: "january")
print("Semester Type: \(typeOfSemester)" )

Output

Semester Type: spring

Declaring Enumerator

// Declarign enumeration
enum Month {
    case january, febuary, march, april, may, june, july, august, september, october, november, december
}

func semester(for month: Month) -> String {
    switch month {
    case .august, .september, .october, .november, .december:
        return "Autumn"
    case .january, .febuary, .march, .april, .may:
        return "Spring"
    default:
        return "Not in the school year"
    }
}

var month = Month.april
print(semester(for: month))

Output

Spring

Raw Value

// Flat Map: Flatten NEsted Collections
// RAW VALUE
enum Month: Int {
    case january, february, march, april, may, june, july, august, september, october, november, december
}

func semester(for month: Month) -> String {
    switch month {
    case .august, .september, .october, .november, .december:
        return "autumn"
    case .january, .february, .march, .april, .may:
        return "spring"
    default:
        return "Not in the school year"
    }
}
print("RAW VALUE OF ENUM CASE: \(Month.march.rawValue)")
let typeOfSemester = semester(for: .october)
print("Semester Type:\(typeOfSemester)" )

Output

RAW VALUE OF ENUM CASE: 2
Semester Type:autumn

If we set a value of the first enum as 1 then the raw value count will start from there

enum Month: Int {
    case january = 2, february, march, april, may, june, july, august, september, october, november, december
}

print(Month.february.rawValue)