天天看點

swift枚舉

Swift中的枚舉可以定義一組常量、提高程式的可讀性;還具有面向對象特性。

使用enum關鍵詞聲明枚舉類型,具體定義放在一對大括号内,枚舉的文法格式如下:

enum 枚舉名

     枚舉的定義

}

“枚舉名”是該枚舉類型的名稱。它首先應該是有效的辨別符,其次應該遵守面向對象的命名規範,它由一組成員值和一組相關值組成。

成員值

枚舉的成員值預設情況下不是整數類型,以下代碼是聲明枚舉示例:

<span style="font-size:14px;">enum WeekDays {  

    case Monday  

    case Tuesday  

    case Wednesday  

    case Thursday  

    case Friday  

}  

</span>  

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

    case Monday, Tuesday, Wednesday, Thursday, Friday  

}</span>  

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

<span style="font-size:14px;">var day = WeekDays.Friday   

day = WeekDays.Wednesday   

day = .Monday   </span>  

使用枚舉成員指派時候,我們可以采用完整的“枚舉類型名.成員值”的形式,也可以省略枚舉類型采用“.成員值”的形式。這種省略形式能夠通路的前提是,Swift編譯器能夠根據上下文環境推斷類型。因為我們已經在第1行和第2行給day變量指派,是以即使第3行代碼采用縮寫,Swift編譯器能夠推斷出資料類型是WeekDays。

原始值

出于業務上的需要,要為每個成員提供某種基本資料類型,我們可以為枚舉類型提供原始值(raw values)聲明,這些原始值類型可以是:字元、字元串、整數和浮點數等。

原始值枚舉的文法格式如下:

enum 枚舉名: 資料類型

{   

  case 成員名 = 預設值

  ...

在“枚舉名”後面跟“:”和“資料類型”就可以聲明原始值枚舉的類型,然後在定義case成員的時候需要提供原始值。

以下代碼是聲明枚舉示例:

​​

<span style="font-size:14px;">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中的聯合類型。下面看一個枚舉類型的聲明:

<span style="font-size:14px;">enum Figure {  

    case Rectangle(Int, Int)  

    case Circle(Int)  

枚舉類型Figure(圖形)有兩個相關值: Rectangle(矩形)和Circle(圓形)。Rectangle和Circle是與Figure有關聯的相關值,它們都是元組類型,對于一個特定的Figure執行個體,隻能是其中一個相關值。從這一點來看,枚舉類型的相關值類似于C中的聯合類型。