《從零開始學Swift》學習筆記(Day 24)——列舉

智捷關東昇發表於2016-03-15

原創文章,歡迎轉載。轉載請註明:關東昇的部落格

  Swift中的列舉可以定義一組常量、提高程式的可讀性;還具有物件導向特性。
  使用enum關鍵詞宣告列舉型別,具體定義放在一對大括號內,列舉的語法格式如下:
    enum 列舉名
    {
     列舉的定義
    }
  “列舉名”是該列舉型別的名稱。它首先應該是有效的識別符號,其次應該遵守物件導向的命名規範,它由一組成員值和一組相關值組成。
成員值
  列舉的成員值預設情況下不是整數型別,以下程式碼是宣告列舉示例:

enum WeekDays {
    case Monday
    case Tuesday
    case Wednesday
    case Thursday
    case Friday

}

  在這些成員值前面要加上case關鍵字,也可以將多個成員值放在同一行,用逗號隔開,如下所示:

enum WeekDays {
    case Monday, Tuesday, Wednesday, Thursday, Friday

}

  下面我們看一個示例,程式碼如下:

var day = WeekDays.Friday    
day = WeekDays.Wednesday    

day = .Monday

  使用列舉成員賦值時候,我們可以採用完整的“列舉型別名.成員值”的形式,也可以省略列舉型別採用“.成員值”的形式。這種省略形式能夠訪問的前提是,Swift編譯器能夠根據上下文環境推斷型別。因為我們已經在第1行和第2行給day變數賦值,所以即使第3行程式碼採用縮寫,Swift編譯器能夠推斷出資料型別是WeekDays。
  原始值
  出於業務上的需要,要為每個成員提供某種基本資料型別,我們可以為列舉型別提供原始值(raw values)宣告,這些原始值型別可以是:字元、字串、整數和浮點數等。
  原始值列舉的語法格式如下:
    enum 列舉名: 資料型別
    {
      case 成員名 = 預設值
      ...
    }
  在“列舉名”後面跟“:”和“資料型別”就可以宣告原始值列舉的型別,然後在定義case成員的時候需要提供原始值。
以下程式碼是宣告列舉示例:

enum WeekDays: Int {
    case Monday            = 0
    case Tuesday            = 1
    case Wednesday         = 2
    case Thursday           = 3
    case Friday             = 4

}

  我們宣告的WeekDays列舉型別的原始值型別是Int,需要給每個成員賦值,只要是Int型別都可以,但是每個分支不能重複。
相關值
  在Swift中除了可以定義一組成員值,還可以定義一組相關值(associated values),它有點類似於C中的聯合型別。下面看一個列舉型別的宣告:

enum Figure {
    case Rectangle(Int, Int)
    case Circle(Int)

}

  列舉型別Figure(圖形)有兩個相關值: Rectangle(矩形)和Circle(圓形)。Rectangle和Circle是與Figure有關聯的相關值,它們都是元組型別,對於一個特定的Figure例項,只能是其中一個相關值。從這一點來看,列舉型別的相關值類似於C中的聯合型別。

歡迎關注關東昇新浪微博@tony_關東昇。 關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程資訊

enter image description here

更多精品iOS、Cocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com 智捷課堂論壇網站:http://51work6.com/forum.php

相關文章