Swift編程之列舉類型詳解。本站提示廣大學習愛好者:(Swift編程之列舉類型詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是Swift編程之列舉類型詳解正文
想必寫進程序的童鞋對列舉類型其實不生疏吧,應用列舉類型的利益是多多的,在這兒就不做過量的贅述了。Fundation框架和UIKit中的列舉更是數不堪數,列舉可使你的代碼更容易浏覽而且可以進步可保護性。在Swift說話中的列舉可謂是讓人面前一亮。在Swift中的列舉不只保存了年夜部門編程說話中列舉的特征,同時還添加了一些好用並且適用的新特征,在本篇文章中將領略一些Swift中列舉類型的魅力。
有小同伴會問,不就是列舉麼,有甚麼好說的。在Swift中的列舉怎否則,Swift中的列舉的功效要壯大的多,不只可以給列舉元素綁定值,並且可以給列舉元素聯系關系多個值,同時還可以經由過程元素的值給一個列舉變量賦一個列舉值,而且列舉中可以界說列舉函數。上面將要開端窺測一下Swift中的列舉。
1、界說列舉
在Swift中列舉的界說與其他編程說話中界說列舉分歧,在每一個列舉元素後面多了一個症結字case, case後緊跟的是列舉元素,上面是界說列舉類型的兩種方法。
1. 多個case, 每一個列舉元素前都有個case
//列舉的界說 enum KindOfAnimal { case Cat case Dog case Cow case Duck case Sheep }
2.一個case弄定一切元素,列舉元素之間應用逗號離隔
//你也能夠如許界說列舉類型 enum KindOfAnimalTwo { case Cat, Dog, Cow, Duck, Sheep }
2、列舉類型的應用
界說完列舉類型就是為了應用的對吧,直接應用列舉類型聲明變量便可, 在Swift中是不須要typedef來界說列舉類型的,我們可以直接應用列舉類型。
//界說列舉變量並賦值 var animal1: KindOfAnimal = KindOfAnimal.Cat
給列舉變量賦值時也能夠把列舉類型名省略失落,由於在聲明列舉變量時就曾經指定了列舉變量的類型。
var animal2: KindOfAnimal = .Dog
在Switch中應用我們的列舉變量
//在Switch…Case中應用列舉 switch animal1 { case KindOfAnimal.Cat: println("Cat") case KindOfAnimal.Dog: println("Dog") case KindOfAnimal.Cow: println("Cow") case KindOfAnimal.Duck: println("Duck") case KindOfAnimal.Sheep: println("Sheep") default: println("error = 呵呵") }
3、給列舉成員賦值
在Swift中聲明列舉時,是可以給每一個列舉成員賦一個值的,上面的City列舉的成員就被指定了一個值,以下所示:
//給列舉賦值 enum City: String{ case Beijing = "北京" case ShangHai = "上海" case GuangZhou = "廣州" case ShengZhen = "深圳" }
應用列舉變量的rawValue可以獲得給每一個列舉成員賦的值,代碼以下:
//界說列舉變量並賦值 var myInCity: City = City.Beijing //獲得列舉變量的值 var myInCityString: String = myInCity.rawValue; println(myInCityString) //輸入:北京
4、經由過程列舉成員的值給列舉變量賦值
甚麼是經由過程列舉成員的值給列舉變量賦值呢?舉個例子,以下面的列舉類型City為例,假設我們只曉得一個列舉成員的值是“北京”,而不曉得“北京”這個值對應的列舉成員是"Beijing", 在Swift中是可以經由過程“北京”這個值給列舉變量賦一個列舉成員“Beijing”的。
是否是有點繞啊,來點實例吧,上面就是經由過程列舉成員的原始值給列舉變量賦值的代碼
//經由過程列舉成員的值,來給列舉成員賦值 var youInCity: City? = City(rawValue: "北京");
為啥我們的youInCity是可選值類型的呢?緣由很簡略,我們不肯定列舉City中的成員的值能否含有“北京”,列舉變量youInCity的值是不肯定的,所以喽是可選類型的,上面我們就掏出youInCity的值,起首斷定youInCity能否為City.Beijing, 假如是,解釋賦值勝利就輸入值。
//掏出youInCity中的值 if youInCity == City.Beijing { var cityName: NSString = youInCity!.rawValue println(cityName) //輸入:北京 }
找一個列舉成員的值中不包括的字符串用來給列舉變量賦值,不雅察一下成果,上面的testCity的值打印出來為nil, 由於列舉中沒有一個成員的值為“京”。
//傳入一個列舉中沒有的值 var testCity: City? = City(rawValue: "京"); // testCity為nil println(testCity)
5、列舉值自增
好器械照樣要保存的,在Swift中的列舉值假如是整數的話,第一個賦值後,後邊的會自增的。關於列舉值自增就不多說了,直接看實例吧。
//列舉值自增 enum Hour: Int{ case One = 1 case Two case Three case Four case Five case Six case Seven case Eight } var hourTest: Int = Hour.Eight.rawValue println(hourTest) // hourTest = 8
6、列舉聯系關系值
甚麼是列舉的聯系關系值呢?從字面意思上看是給列舉成員聯系關系一個值,沒錯,就是在給列舉變量賦值時,給列舉變量聯系關系一個值。在Swift中若何做的呢?就是在聲明列舉類型中的元素時應用小括號來制訂聯系關系值的類型,然後在給列舉變量賦值的時刻聯系關系一個或許多個值便可,直接看實例。
上面的代碼是給iOS指定了兩個String類型的聯系關系值,在給列舉變量賦值的時刻聯系關系兩個值。聯系關系這兩個值可以在Switch語句中停止應用。
//列舉的聯系關系值 enum mobileLanguage{ case IOS (String, String) case Android (String) } var iPhone: mobileLanguage = mobileLanguage.IOS("Objective-C", "Swift") switch iPhone { case mobileLanguage.IOS(let language1, let language2): println("language1 = \(language1), language2 = \(language2)") case mobileLanguage.Android(let temp): println(temp); default: println("NO") } //輸入成果:language1 = Objective-C, language2 = Swift
7、列舉函數
在Swift中的列舉是可以添加函數的,有無面前一亮呢。上面的代碼段是在下面的聯系關系值代碼的基本上添加了一個描寫函數,前往的就是以後列舉變量的列舉信息,以下代碼段所示:
//列舉函數 enum mobileLanguageFun{ case IOS (String, String) case Android (String) //界說列舉函數 var description: String{ switch self { case mobileLanguageFun.IOS(let language1, let language2): return "language1 = \(language1), language2 = \(language2)" case mobileLanguageFun.Android(let temp): return temp default: return ("NO") } } } var myMobile: mobileLanguageFun = mobileLanguageFun.IOS("objc", "swift") println(myMobile.description) //language1 = objc, language2 = swift
以上就是本文的全體內容,願望對年夜家進修swift軟件編程有所贊助。