新聞中心
Swift是一種適用于iOS和OS X應用的全新編程語言,它建立在最好的C和Objective-C語言之上,并且沒有C語言的兼容性限制。Swift采用安全的編程模式,增加了現(xiàn)代功能使編程更容易、更靈活、更有趣。

枚舉簡單的說也是一種數(shù)據(jù)類型,只不過是這種數(shù)據(jù)類型只包含自定義的特定數(shù)據(jù),它是一組有共同特性的數(shù)據(jù)的集合。
Swift 的枚舉類似于 Objective C 和 C 的結(jié)構(gòu),枚舉的功能為:
它聲明在類中,可以通過實例化類來訪問它的值。
枚舉也可以定義構(gòu)造函數(shù)(initializers)來提供一個初始成員值;可以在原始的實現(xiàn)基礎上擴展它們的功能。
可以遵守協(xié)議(protocols)來提供標準的功能。
語法
Swift 中使用 enum 關鍵詞來創(chuàng)建枚舉并且把它們的整個定義放在一對大括號內(nèi):
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("星期六")
}
以上程序執(zhí)行輸出結(jié)果為:
星期四
枚舉中定義的值(如 Sunday,Monday,……和Saturday)是這個枚舉的成員值(或成員)。case關鍵詞表示一行新的成員值將被定義。
注意: 和 C 和 Objective-C 不同,Swift 的枚舉成員在被創(chuàng)建時不會被賦予一個默認的整型值。在上面的DaysofaWeek例子中,Sunday,Monday,……和Saturday不會隱式地賦值為0,1,……和6。相反,這些枚舉成員本身就有完備的值,這些值是已經(jīng)明確定義好的DaysofaWeek類型。
var weekDay = DaysofaWeek.THURSDAY
weekDay的類型可以在它被DaysofaWeek的一個可能值初始化時推斷出來。一旦weekDay被聲明為一個DaysofaWeek,你可以使用一個縮寫語法(.)將其設置為另一個DaysofaWeek的值:
var weekDay = .THURSDAY
當weekDay的類型已知時,再次為其賦值可以省略枚舉名。使用顯式類型的枚舉值可以讓代碼具有更好的可讀性。
枚舉可分為相關值與原始值。
相關值與原始值的區(qū)別
相關值
以下實例中我們定義一個名為 Student 的枚舉類型,它可以是 Name 的一個字符串(String),或者是 Mark 的一個相關值(Int,Int,Int)。
import Cocoa
enum Student{
case Name(String)
case Mark(Int,Int,Int)
}
var studDetails = Student.Name("Runoob")
var studMarks = Student.Mark(98,97,95)
switch studMarks {
case .Name(let studName):
print("學生的名字是: \(studName)。")
case .Mark(let Mark1, let Mark2, let Mark3):
print("學生的成績是: \(Mark1),\(Mark2),\(Mark3)。")
}
以上程序執(zhí)行輸出結(jié)果為:
學生的成績是: 98,97,95。
原始值
原始值可以是字符串,字符,或者任何整型值或浮點型值。每個原始值在它的枚舉聲明中必須是唯一的。
在原始值為整數(shù)的枚舉時,不需要顯式的為每一個成員賦值,Swift會自動為你賦值。
例如,當使用整數(shù)作為原始值時,隱式賦值的值依次遞增1。如果第一個值沒有被賦初值,將會被自動置為0。
import Cocoa
enum Month: Int {
case January = 1, February, March, April, May, June, July, August, September, October, November, December
}
let yearMonth = Month.May.rawValue
print("數(shù)字月份為: \(yearMonth)。")
以上程序執(zhí)行輸出結(jié)果為:
數(shù)字月份為: 5。
網(wǎng)站欄目:Swift枚舉使用方法
URL標題:http://www.dlmjj.cn/article/cosjecg.html


咨詢
建站咨詢
