枚舉為一系列相關(guān)的值定義了一個(gè)公共的組類(lèi)型,同時(shí)可以再類(lèi)型安全的情況下去使用這些值。
(1)枚舉的定義和訪(fǎng)問(wèn)
Swift中,也使用enum關(guān)鍵字來(lái)創(chuàng)建枚舉,語(yǔ)法格式如下
enum 枚舉名 {
// 枚舉定義
}
enum WeekDays {
case Monday
case Tuesday
case Wednesday
case Thursday
}
從上面的代碼示例中可以看到,枚舉名以大寫(xiě)字母開(kāi)頭,使用case關(guān)鍵字定義了四個(gè)值,這些值代表這個(gè)枚舉的成員值。多個(gè)成員值也可以寫(xiě)在一行,使用逗號(hào)隔開(kāi):
enum WeekDays {
case Monday, Tuesday, Wednesday, Thursday
}
枚舉在被創(chuàng)建時(shí),枚舉成員不會(huì)被賦予一個(gè)默認(rèn)的整型值,如果給枚舉成員提供一個(gè)值,這個(gè)值被稱(chēng)為原始值,而且該值的類(lèi)型可以使字符串、字符、整型值、或者浮點(diǎn)數(shù)
來(lái)看下面訪(fǎng)問(wèn)枚舉成員值的代碼:
var day = WeekDays.Monday
day的類(lèi)型可以在WeekDays的某個(gè)值初始化時(shí)推斷出來(lái),一旦day被聲明為WeekDays類(lèi)型,就能夠使用更加簡(jiǎn)短的點(diǎn)語(yǔ)法將其設(shè)置為另一個(gè)值:
day = .Tuesday
(2)原始值
上面提到,枚舉類(lèi)型需要為其設(shè)置一個(gè)類(lèi)型和初始值,下面的代碼可以一目了然:
enum WeekDays : Int {
case Monday = 0
case Tuesday = 1
case Wednesday = 2
case Thursday = 3
}
當(dāng)然也可以有簡(jiǎn)化寫(xiě)法
enum WeekDays : Int {
case Monday = 0, Tuesday, Wednesday, Thursday
}
(3)使用Switch語(yǔ)句匹配枚舉值
這個(gè)用法對(duì)于我們來(lái)說(shuō)并不陌生,枚舉類(lèi)型和switch可以很好地配合使用。
func writeGreeting(day : WeekDays) {
switch day {
case .Monday:
print("星期一")
case .Tuesday :
print("星期二")
case .Wednesday :
print("星期三")
case .Thursday :
print("星期四")
}