麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > 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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一级毛片电影网 | 丰满年轻岳中文字幕一区二区 | 亚洲国产精品一区二区三区 | 精品一区二区三区中文字幕老牛 | 欧美一区二区网站 | 亚洲成人福利在线观看 | 国产午夜探花 | 午夜视频在线观 | 久草视频国产在线 | 色婷婷tv| 国产欧美一区二区三区免费看 | 国产88久久久国产精品免费二区 | 色吧久久 | 欧洲伊人网 | 成人在线精品视频 | 日本看片一区二区三区高清 | 欧美福利视频一区二区三区 | 伦一区二区三区中文字幕v亚洲 | 国产精品剧情一区二区三区 | 一级黄色免费观看 | 久色免费 | 日韩2区 | 亚洲精品欧美在线 | 欧美 日韩 亚洲 中文 | www.com超碰| 亚洲电影免费观看国语版 | 亚洲日本韩国在线观看 | 国产精品高潮视频 | 999久久国精品免费观看网站 | 日韩在线欧美在线 | 欧洲精品久久 | 999精品久久久 | 国产黄色录像片 | 久久国产成人精品国产成人亚洲 | 国产精品成人一区二区三区电影毛片 | 最新一区二区三区 | 久久久午夜电影 | 中文字幕在线亚洲精品 | 天天好比网 | 91精品国产乱码久久久久久久久 | 精品一区二区三区毛片 |