天天看點

Swift學習筆記(13)——枚舉

1.文法

使用 enum 關鍵詞來建立枚舉并且把它們的整個定義放在一對大括号内:

enum enumname {
   // 枚舉定義放在這裡
}
           

舉例:

// 定義枚舉
enum DaysofaWeek {
    case Sunday
    case Monday
    case TUESDAY
    case WEDNESDAY
    case THURSDAY
    case FRIDAY
case Saturday
//以上7個是枚舉的成員值(或成員)。case關鍵詞表示一行新的成員值将被定義。
}

var weekDay = DaysofaWeek.THURSDAY
// weekDay被聲明為一個DaysofaWeek,你可以使用一個縮寫文法(.)将其設定為另一個DaysofaWeek的值

weekDay = .THURSDAY
//當weekDay的類型已知時,再次為其指派可以省略枚舉名。
switch weekDay
{
case .Sunday:
    print("星期天")
case .Monday:
    print("星期一")
case .TUESDAY:
    print("星期二")
case .WEDNESDAY:
    print("星期三")
case .THURSDAY:
    print("星期四")
case .FRIDAY:
    print("星期五")
case .Saturday:
    print("星期六")
}
//以上程式執行輸出結果為:
//星期四
           

注意:

和 C 和 Objective-C 不同,Swift 的枚舉成員在被建立時不會被賦予一個預設的整型值。在上面的DaysofaWeek例子中,Sunday,Monday,……和Saturday不會隐式地指派為0,1,……和6。相反,這些枚舉成員本身就有完備的值,這些值是已經明确定義好的DaysofaWeek類型。

2.相關值

enum Student{    // 定義一個名為 Student 的枚舉類型
    case Name(String)       // Name 的一個字元串(String)
    case Mark(Int,Int,Int)  // Mark 的一個相關值(Int,Int,Int)
}
var studDetails = Student.Name("Runoob")
var studMarks = Student.Mark(,,)
switch studMarks {
case .Name(let studName):
    print("學生的名字是: \(studName)。")
case .Mark(let Mark1, let Mark2, let Mark3):
    print("學生的成績是: \(Mark1),\(Mark2),\(Mark3)。")
}
//以上程式執行輸出結果為:
//學生的成績是: 98,97,95。
           

3.原始值

原始值可以是字元串、字元、或者任何整型值或浮點型值。每個原始值在它的枚舉聲明中必須是唯一的。

在原始值為整數的枚舉時,不需要顯式的為每一個成員指派,Swift會自動為你指派。

例如,當使用整數作為原始值時,隐式指派的值依次遞增1。如果第一個值沒有被賦初值,将會被自動置為0。

enum Month: Int {
    case January = , February, March, April, May, June, July, August, September, October, November, December
}

let yearMonth = Month.May.rawValue
print("數字月份為: \(yearMonth)。")
//以上程式執行輸出結果為:
//數字月份為: 5。
           

參考連結:http://www.runoob.com/swift/swift-enumerations.html