Swift 列舉
枚舉簡單的說也是一種資料類型,只不過是這種資料型別只包含自訂的特定數據,它是一組有共同特性的資料的集合。
Swift 的枚舉類似於Objective C 和C 的結構,枚舉的功能為:
它聲明在類別中,可以透過實例化類別來存取它的值。
枚舉也可以定義建構子(initializers)來提供一個初始成員值;可以在原始的實作基礎上擴展它們的功能。
可以遵守協定(protocols)來提供標準的功能。
語法
Swift 中使用enum 關鍵字來建立枚舉並且把它們的整個定義放在一對大括號內:
enum enumname { // 枚举定义放在这里 }
例如我們定義以下表示星期的列舉:
import Cocoa // 定义枚举 enum DaysofaWeek { case Sunday case Monday case TUESDAY case WEDNESDAY case THURSDAY case FRIDAY case Saturday } var weekDay = DaysofaWeek.THURSDAY weekDay = .THURSDAY switch weekDay { case .Sunday: print("星期天") case .Monday: print("星期一") case .TUESDAY: print("星期二") case .WEDNESDAY: print("星期三") case .THURSDAY: print("星期四") case .FRIDAY: print("星期五") case .Saturday: print("星期六") }
以上程式執行輸出結果為:
星期四
列舉中定義的值(如Sunday
, Monday
,…
和Saturday
)是這個列舉的成員值(或成員)。 case
關鍵字表示一行新的成員值將被定義。
注意: 和 C 和 Objective-C 不同,Swift 的枚舉成員在被創建時不會被賦予一個預設的整數值。在上面的
DaysofaWeek
範例中,Sunday
,Monday
,…
和Saturday
不會隱式地賦值為0
,1
,…
和6
。相反,這些枚舉成員本身就有完備的值,這些值是已經明確定義好的DaysofaWeek
型別。
var weekDay = DaysofaWeek.THURSDAY
weekDay
的類型可以在它被DaysofaWeek
的一個可能值初始化時推斷出來。一旦weekDay
被宣告為一個DaysofaWeek
,你可以使用一個縮寫語法(.)將其設定為另一個DaysofaWeek
的值:
var weekDay = .THURSDAY
當weekDay
的類型已知時,再次為其賦值可以省略枚舉名。使用顯式類型的枚舉值可以讓程式碼具有更好的可讀性。
枚舉可分為相關值與原始值。
相關值與原始值的差異
相關值 | 原始值 |
---|---|
不同資料型別 | 相同資料型別 |
實例: enum {10,0.8,"Hello"} | 」實例: enum {10,35, 50} |
值的建立基於常數或變數 | 預先填入的值 |
原始值總是相同的 |