枚舉作為一種通用型的相關值,枚舉的型態可以如下,就以形式來說,枚舉通常都是一組一組的,在下面的例子中,我們可以知道在Week這個例子裡,枚舉裡的舉例是有順序性的;在過去的一些文章也曾指出,枚舉可以很有效用的被使用在排序一些可能有順序的資料中,或許下面這個例子是一個不錯的示範:
enum Week{
case mon
case tue
case wed
case thu
case fri
case sat
case sun
}
也同時可以讓多個枚舉的內容出現在同一行中,如下:
enum Week{
case mon,tue,wed,thu,fri,sat,sun
}
而每一個枚舉內部的case都具有一個默認的值,如果在沒有設定的情況下,枚舉case的值應該是這樣:
enum Week{
case mon = 0,tue,wed,thu,fri,sat,sun
}
通常第一個case的順序值都是0,而假設今天你因為需要可能需要指定這個enum內部的case帶有的值,那你可以這樣做:
enum Week{
case mon = 1,tue,wed,thu,fri,sat,sun
}
這樣就會讓所有的case的順序值就是從1開始,依此類推。
如果你今天要叫出某一個case,你這樣做可以讓week這個枚舉基於第一個case被設置於1的基礎下,然後讀取出你給予它的值:
Week.init(rawValue:6)
//這個時候打印出來的就會是sat
枚舉還有一個很好使用的案例,叫做迭代,下面來舉個例子
enum Week:CaseIterable{
case mon,tue,wed,thu,fri,sat,sun
}
let weekNumber = Week.allCase.count
print(weekNumber)
//可以得出7
allCase這個關鍵字的意義就是把所有的case都集合起來,讓我們可以藉由訪問等方式對它進行使用。
switch case跟枚舉的共同使用算是很常見的組合,我們可以將單個枚舉值與switch case匹配
var weekDay = Week.mon
switch weekDay{
case .mon:
print("Monday")
case .tue:
print("Tuesday")
case .wed:
print("Wednesday")
case .thu:
print("Thursday")
case .fri:
print("Friday")
case .sat:
print("Saturday")
case .sun:
print("Sunday")
}
在上述的例子中,可以這樣解釋:
在符合weekDay的某個元素的case之下,就打印出該case所設置的結果。
枚舉的應用其實蠻廣泛的,假若在實作中涉及了有順序的選項排列的邏輯時,不妨考慮看看枚舉的使用吧!
鐵人賽