iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 24
0
Software Development

Swift 新手上路之30天復刻版型系列 第 24

Day 24 - Swift 之 enum 語法

enum 提供我們的程式有更佳的可讀性,也能清楚的表現其中成員。

enum CompassPoint:String { //列舉的自定義型別
    case North      //各列舉定義
    case South
    case West
    case East
}
var directionToHead = CompassPoint.West

又能省略成以下

var directionToHead:  CompassPoint = .West

再使用 Switch 語句來搭配列舉值,利用 Switch 判斷 directionToHead 是哪個方向

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

而 enum 也提供 raw value,在宣告 enum 成員時,就可透過 raw value 來指派特定的值。定義 enum 時需要宣告 raw value 型別,且裡面所有成員也需要是同一個型別。

enum WeekDay: Int {
    case Monday = 1
    case Tuesday = 2
    case Wednesday = 3
    case Thursday = 4
    case Friday = 5
    case Saturday = 6
    case Sunday = 7
}

###Implicitly Assigned Raw Values 隱式指定的原始值

enum Planet2: Int {
    case mercury = 1, venus, earth, mars, jupiter,saturn, uranus, neptune
}

以上的例子,Planet2.mercury 有個明確的 raw value 為 1; 則 Planet2.venus 則有個隱式的 raw value 為 2,以此類推。

###Associated Values 關聯值
關聯值提供動態設定的好處,保留之後指定值的彈性。

enum Barcode { //定義一個叫Barcode的列舉類型
    case upc(Int, Int, Int, Int) 
    case qrCode(String) 
}

var productBarcode = Barcode.upc(8, 85909, 51226,3)
productBarcode = .qrCode("ABCDEFGHIJKLMNOP")

switch productBarcode {
case .upc(let numberSystem, let manufacturer, let product, let check):
        print("UPC: \(numberSystem), \(manufacturer), \(product), \(check)")
case .qrCode(let productCode):
        print("QR Code: \(productCode)")
}

上一篇
Day 23 – Swift 之 closure 語法
下一篇
Day 25 - Swift 型別轉換
系列文
Swift 新手上路之30天復刻版型30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言