最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Swift編程之枚舉類型詳解

 更新時間:2016年02月26日 11:53:17   作者:青玉伏案  
這篇文章主要介紹了Swift編程之枚舉類型,講解了枚舉語法、匹配枚舉值與switch語句、關(guān)聯(lián)值、原始值等內(nèi)容,Swift中枚舉類型是最重要的類型,感興趣的小伙伴們可以參考一下

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

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

一、定義枚舉

在Swift中枚舉的定義與其他編程語言中定義枚舉不同,在每個枚舉元素前面多了一個關(guān)鍵字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

給枚舉變量賦值時也可以把枚舉類型名省略掉,因為在聲明枚舉變量時就已經(jīng)指定了枚舉變量的類型。

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

找一個枚舉成員的值中不包含的字符串用來給枚舉變量賦值,觀察一下結(jié)果,下面的testCity的值打印出來為nil, 因為枚舉中沒有一個成員的值為“京”。

//傳入一個枚舉中沒有的值
var testCity: City? = City(rawValue: "京");

// testCity為nil
println(testCity)

五、枚舉值自增

好東西還是要保留的,在Swift中的枚舉值如果是整數(shù)的話,第一個賦值后,后邊的會自增的。關(guān)于枚舉值自增就不多說了,直接看實例吧。

//枚舉值自增
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

六、枚舉關(guān)聯(lián)值

什么是枚舉的關(guān)聯(lián)值呢?從字面意思上看是給枚舉成員關(guān)聯(lián)一個值,沒錯,就是在給枚舉變量賦值時,給枚舉變量關(guān)聯(lián)一個值。在Swift中如何做的呢?就是在聲明枚舉類型中的元素時使用小括號來制定關(guān)聯(lián)值的類型,然后在給枚舉變量賦值的時候關(guān)聯(lián)一個或者多個值即可,直接看實例。

下面的代碼是給iOS指定了兩個String類型的關(guān)聯(lián)值,在給枚舉變量賦值的時候關(guān)聯(lián)兩個值。關(guān)聯(lián)這兩個值可以在Switch語句中進行使用。

//枚舉的關(guān)聯(lián)值
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")
}

//輸出結(jié)果:language1 = Objective-C, language2 = Swift

七、枚舉函數(shù)

在Swift中的枚舉是可以添加函數(shù)的,有沒有眼前一亮呢。下面的代碼段是在上面的關(guān)聯(lián)值代碼的基礎(chǔ)上添加了一個描述函數(shù),返回的就是當前枚舉變量的枚舉信息,如下代碼段所示:

//枚舉函數(shù)
enum mobileLanguageFun{
 case IOS (String, String)
 case Android (String)
 //定義枚舉函數(shù)
 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

以上就是本文的全部內(nèi)容,希望對大家學習swift軟件編程有所幫助。

相關(guān)文章

  • Swift 3中使用FMDB遇到的問題與解決方法

    Swift 3中使用FMDB遇到的問題與解決方法

    相信大家都熟悉OC使用FMDB第三方庫,進行數(shù)據(jù)庫操作,增、刪、改、查,但最近在Swift 3中使用FMDB遇到了一些問題,下面這篇文章主要給大家介紹了關(guān)于在Swift 3中使用FMDB遇到的問題與解決方法,需要的朋友可以參考下。
    2017-07-07
  • Swift重構(gòu)自定義空等運算符 “??=” 實例

    Swift重構(gòu)自定義空等運算符 “??=” 實例

    這篇文章主要為大家介紹了Swift重構(gòu)自定義空等運算符 “??=” 實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 深入講解Swift的內(nèi)存管理

    深入講解Swift的內(nèi)存管理

    不管在什么語言里,內(nèi)存管理的內(nèi)容都很重要,Swift使用自動引用計數(shù)來管理應用程序的內(nèi)存使用。這表示內(nèi)存管理已經(jīng)是Swift的一部分,在大多數(shù)情況下,你并不需要考慮內(nèi)存的管理。本文主要介紹了Swift中內(nèi)存管理的相關(guān)資料,需要的朋友可以參考。
    2017-03-03
  • 在Swift中使用Objective-C編寫類、繼承Objective-C類

    在Swift中使用Objective-C編寫類、繼承Objective-C類

    這篇文章主要介紹了在Swift中使用Objective-C編寫類、繼承Objective-C類等操作方法介紹,需要的朋友可以參考下
    2014-07-07
  • Swift開發(fā)中switch語句值綁定模式

    Swift開發(fā)中switch語句值綁定模式

    本文給大家分享Swift開發(fā)中switch語句值綁定模式,非常不錯,具有參考借鑒價值,需要的的朋友參考下
    2016-12-12
  • switch實現(xiàn)一個兩數(shù)的運算代碼示例

    switch實現(xiàn)一個兩數(shù)的運算代碼示例

    這篇文章主要介紹了switch實現(xiàn)一個兩數(shù)的運算代碼示例,需要的朋友可以參考下
    2017-06-06
  • RxSwift學習教程之基礎(chǔ)篇

    RxSwift學習教程之基礎(chǔ)篇

    RxSwift是Swift函數(shù)響應式編程的一個開源庫,由Github的ReactiveX組織開發(fā),維護。下面這篇文章主要給大家介紹了關(guān)于RxSwift學習之基礎(chǔ)篇的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • Swift4.0 Array數(shù)組詳解

    Swift4.0 Array數(shù)組詳解

    這篇文章主要為大家詳細介紹了Swift4.0 Array數(shù)組的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Swift實現(xiàn)表格視圖單元格單選(2)

    Swift實現(xiàn)表格視圖單元格單選(2)

    這篇文章主要為大家詳細介紹了Swift實現(xiàn)表格視圖單元格單選的第二篇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 解析Swift中的泛型支持與使用

    解析Swift中的泛型支持與使用

    支持泛型意味著可以在規(guī)定參數(shù)類型的情況下更靈活地編寫程序,也是Swift語言先進而又強大的體現(xiàn),這里我們就來解析Swift中的泛型支持與使用:
    2016-07-07

最新評論

宁化县| 玛沁县| 洛宁县| 镇远县| 瑞金市| 图木舒克市| 和田县| 延津县| 佳木斯市| 大丰市| 电白县| 阜平县| 灵璧县| 临沭县| 仁化县| 深圳市| 蒙山县| 黎城县| 遂川县| 阿克陶县| 阿瓦提县| 梅河口市| 那曲县| 宜君县| 泽库县| 安远县| 涞水县| 金乡县| 本溪市| 南通市| 右玉县| 黄龙县| 佳木斯市| 威海市| 西华县| 巫山县| 航空| 邵阳县| 开封县| 东丰县| 沅陵县|