亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

Swift編程之枚舉類型詳解

2020-03-09 17:49:07
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Swift編程之枚舉類型,講解了枚舉語法、匹配枚舉值與switch語句、關聯值、原始值等內容,Swift中枚舉類型是最重要的類型,感興趣的小伙伴們可以參考一下
 

想必寫過程序的童鞋對枚舉類型并不陌生吧,使用枚舉類型的好處是多多的,在這兒就不做過多的贅述了。Fundation框架和UIKit中的枚舉更是數不勝數,枚舉可以使你的代碼更易閱讀并且可以提高可維護性。在Swift語言中的枚舉可謂是讓人眼前一亮。在Swift中的枚舉不僅保留了大部分編程語言中枚舉的特性,同時還添加了一些好用而且實用的新特性,在本篇文章中將領略一些Swift中枚舉類型的魅力。

有小伙伴會問,不就是枚舉么,有什么好說的。在Swift中的枚舉怎不然,Swift中的枚舉的功能要強大的多,不僅可以給枚舉元素綁定值,而且可以給枚舉元素關聯多個值,同時還可以通過元素的值給一個枚舉變量賦一個枚舉值,并且枚舉中可以定義枚舉函數。下面將要開始窺探一下Swift中的枚舉。

一、定義枚舉

在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 }

二、枚舉類型的使用

定義完枚舉類型就是為了使用的對吧,直接使用枚舉類型聲明變量即可, 在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 = 呵呵")}

三、給枚舉成員賦值

在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) //輸出:北京

四、通過枚舉成員的值給枚舉變量賦值

什么是通過枚舉成員的值給枚舉變量賦值呢?舉個例子,以上面的枚舉類型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為nilprintln(testCity)

五、枚舉值自增

好東西還是要保留的,在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.rawValueprintln(hourTest) // hourTest = 8

六、枚舉關聯值

什么是枚舉的關聯值呢?從字面意思上看是給枚舉成員關聯一個值,沒錯,就是在給枚舉變量賦值時,給枚舉變量關聯一個值。在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

七、枚舉函數

在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軟件編程有所幫助。



注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品毛片a∨一区二区三区|国| 亚洲成人网在线观看| 欧美亚洲成人免费| 精品久久久久久| 国产中文字幕91| 九九热这里只有精品6| 欧美猛少妇色xxxxx| 欧美高清视频免费观看| 亚洲欧美精品伊人久久| 久久香蕉国产线看观看av| 成人黄色在线观看| 91精品久久久久久久久久久久久久| 久久综合九色九九| 久久成人18免费网站| 26uuu国产精品视频| 国产福利视频一区| 在线成人中文字幕| 亚洲一区二区三区毛片| 成人有码视频在线播放| 亚洲国产精品va在看黑人| 亚洲黄色片网站| 亚洲欧美国产视频| 亚洲欧美另类自拍| 亚洲一区999| 亚洲男人第一av网站| 红桃视频成人在线观看| 国产一区二区丝袜高跟鞋图片| 日韩成人在线视频网站| 精品国产乱码久久久久久天美| 国产精品国产亚洲伊人久久| 欧美日韩国产精品一区| 韩国一区二区电影| 成人网在线观看| 亚洲女同性videos| 亚洲欧美激情四射在线日| 亚洲2020天天堂在线观看| 欧美大片在线影院| 97热在线精品视频在线观看| 日韩免费av一区二区| 91丝袜美腿美女视频网站| 欧美日韩另类字幕中文| 国产成人av在线播放| 日韩一区二区久久久| 亚洲欧美日本另类| 国产精品第一区| 欧美日韩国产二区| 欧美高清视频一区二区| 亚洲第一免费播放区| 成人网址在线观看| 日韩欧美在线观看| 最近2019中文字幕大全第二页| 国产精品视频专区| 久久久国产一区二区三区| 国内精品久久影院| 国产日韩亚洲欧美| 97精品国产97久久久久久| 欧美最顶级的aⅴ艳星| 欧美怡红院视频一区二区三区| 亚洲最大激情中文字幕| 亚洲一区二区三区四区视频| 日韩成人在线电影网| 国产精品久久久久久久久久新婚| 国产在线98福利播放视频| 国产精品影院在线观看| 91久久久久久久久久| 91精品国产自产在线观看永久| 日韩高清电影好看的电视剧电影| xxav国产精品美女主播| 中文字幕欧美日韩va免费视频| www.亚洲成人| 日韩av在线一区二区| 欧美在线免费看| 国产精品久久网| 亚洲国产成人在线播放| 亚洲男人天堂2024| 久久久精品在线观看| 欧美性生交大片免费| 久久久久久午夜| 久久亚洲精品国产亚洲老地址| 国产成人精品日本亚洲专区61| 欧美性猛交xxxx免费看久久久| 日韩大陆欧美高清视频区| 欧美黄色性视频| 91爱视频在线| 青草成人免费视频| 欧美成人免费小视频| 成人黄色av播放免费| 国内伊人久久久久久网站视频| xxxx性欧美| 欧美精品在线极品| 国产精品嫩草影院久久久| 久久精品国产一区二区三区| 91网站免费观看| 欧美激情免费视频| 成人网中文字幕| 日韩专区在线观看| 最近2019年中文视频免费在线观看| 日韩激情视频在线播放| 黑人巨大精品欧美一区二区一视频| 日韩欧美黄色动漫| 成人国产精品久久久久久亚洲| 91九色国产在线| 欧美日韩中国免费专区在线看| 久久精品最新地址| 欧美日韩另类字幕中文| 久久精品99久久香蕉国产色戒| 中文字幕精品—区二区| 欧美又大粗又爽又黄大片视频| 亚洲第一在线视频| 日韩高清av一区二区三区| 亚洲人成网站在线播| 在线观看久久久久久| 国产在线精品一区免费香蕉| 欧美www视频在线观看| 亚洲一区二区三区四区视频| 欧美专区国产专区| 日韩久久免费视频| 欧美日韩第一视频| 国产综合久久久久久| 韩国19禁主播vip福利视频| 日韩欧美在线免费| 伦伦影院午夜日韩欧美限制| 国产精品美女久久久久久免费| 成人做爽爽免费视频| 最好看的2019的中文字幕视频| 国产精品视频免费在线观看| 亚洲色图50p| 九九精品在线视频| 亚洲精品视频免费在线观看| 在线日韩精品视频| 日韩中文字幕在线播放| 国产日韩欧美一二三区| 国产精品免费观看在线| 日韩精品黄色网| 精品国产乱码久久久久久婷婷| 亚洲精品视频网上网址在线观看| 国产人妖伪娘一区91| 国产精品久久久久久久久久免费| 日韩免费观看av| 久久香蕉国产线看观看av| 国产精品亚洲美女av网站| 亚洲国产精品电影在线观看| 亚洲欧美日本精品| 在线观看国产成人av片| 久久高清视频免费| 最近2019中文字幕一页二页| 国产69久久精品成人看| 国产中文字幕日韩| 久久精品一本久久99精品| 欧美多人乱p欧美4p久久| 国产精品网站大全| 亚洲免费人成在线视频观看| 国产精品白丝jk喷水视频一区| 91在线视频一区| 色偷偷av亚洲男人的天堂| 欧美日本高清视频| 欧美电影电视剧在线观看| 中文字幕精品—区二区| 亚洲字幕一区二区| 在线电影中文日韩| 国产亚洲日本欧美韩国| 色悠悠国产精品| 午夜精品视频在线| 欧美xxxx做受欧美.88|