iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0

終於到了第20天了,已經完成了3/2的進度了。
我們今天要來講 枚舉(enum) 這個東西。
枚舉可以用在許多地方。

枚舉

枚舉語法

使用 enum 來最關鍵字跟創建。

enum SomeEnumeration{
    //定義
}

官方的例子是用東西南北。

enum CompassPoint {
    case north
    case south
    case east
    case west
}

而也可以多個值出現在同一行上面,要用逗號隔開

enum Planet {
    case mercury, venus, earth, mars, jupiter, saturn, uranus, neptune
}

每個枚舉定一個全新的 Type 。就跟其他類型一樣他們的開頭都會是大寫(String, Int, Planet, CompassPoint)。

var directionToHead = CompassPoint.west

directionToHead = .east

因為 directionToHead 已經是 CompassPoint 的類型了,所以可以用更短的方式去賦予同類型的 CompassPoint.east 。

使用 Switch 語法匹配枚舉值

可以使用 Switch 語法來跟枚舉做搭配。

directionToHead = .south
switch directionToHead {
case .north:
    print("Lots of planets have a north")
case .south:
    print("Watch out for penguins")
case .east:
    print("Where the sun rises")
case .west:
    print("Where the skies are blue")
}
// print "Watch out for penguins"

這上面的程式碼可以理解成 directionToHead 有很多狀況,如果他等於 .north 的時候就
print "Lots of planets have a north" 依此類推。

而當你不需要匹配任何東西的時候,你可以給一個 default 的狀態來處理沒有符合的狀況。

let somePlanet = Planet.earth

switch somePlanet {
    case .earth:
    print("Mostly harmless")
    default:
    print("Not a safe place for humans")
}

枚舉的遍歷

有時候你會需要拿到枚舉裡面所有的集合,那可以給枚舉一個遵循 CaseIterable 的協議。
那他會生成一個 allCases 的屬性,用於表達枚舉裡面的所有成員。

enum Beverage: CaseIterable {
    case coffee, tea, juice
}

let numberOfChoices = Beverage.allCases.count
print("\(numberOfChoices) beverage available")
// 印出 "3 beverages available"

今天就到這裡了,讓我們明天繼續。


上一篇
30天的 iOS 修仙道路 (19)
下一篇
30天的 iOS 修仙道路 (21)
系列文
30天的 iOS 修仙道路 站穩腳步基礎篇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言