官术网_书友最值得收藏!

4.2 Swift語言中兩種特殊的運算符

前邊介紹過,Optional可選(值)類型是Swift語言的一大特點,Swift語言中的空合并運算符也是專門為Optional值類型所設計的。除了空合并運算符外,Swift語言中的區間運算符也十分強大易用,熟練使用這些運算符將極大地提高開發效率。

4.2.1 空合并運算符

可選值類型是Swift語言的一個獨特之處,空合并運算符就是針對可選值類型而設計的運算符。首先來看一段示例代碼:

上面的示例就是一個簡單的if-else的選擇結構,利用4.1.5小節介紹的條件運算符(三目運算符)可以將上面的代碼簡寫如下:

     var q:Int? = 8
     var value:Int
     value = (q != nil) ? (q!) : 0

使用條件運算符改寫后的代碼簡單很多,Swift語言中還提供了空合并運算符來更加簡潔地處理這種Optional類型值的條件選擇結構,空合并運算符由“??”表示,上面的代碼可以改寫成如下形式:

     //空合并運算符
     var q:Int? = 8
     var value:Int
     value = q ?? 0

空合并運算符“??”是一個二元運算符,使用空合并運算符改寫后的代碼更加簡潔。其需要兩個操作數,第一個操作數必須為一個Optional值,如果此Optional值不為nil,則將其進行拆包操作,并作為空合并運算的運算結果。如果此Optional值為nil,則會將第二個操作數作為空合并操作運算的結果返回。使用空合并操作符來處理有關Optional值的選擇邏輯將十分方便。

4.2.2 區間運算符

在C語言中,關于范圍概念的描述常常會使用一個表達式來表示,例如:

     //表示大于0小于10的范圍
     index>0 && index<10

在Objective-C語言中提供了NSRange這樣一個結構體來描述范圍,雖然直觀了許多,但開發者在使用時需要構造NSRange實例,使用起來就略顯煩瑣。Swift中除了支持Range結構體來描述范圍外,還提供了一個區間運算符來快捷直觀地表示范圍區間。示例如下:

     //創建范圍 >=0 且<=10 的閉區間
     var range1 = 0...10
     //創建范圍>=0 且<10 的半開區間
     var range2 = 0..<10

也可以通過“~=”運算符來檢查某個數字是否包含于范圍中,示例如下:

     //8是否在range1中
     print(range1 ~= 8)  //輸出 true

區間運算符常見于for-in循環結構中,開發者常常會使用區間運算符來定義循環次數,示例如下:

     //a...b為閉區間寫法
     for index in 0...3 {
        print(index)
     }
     //a..<b為左閉右開區間
     for index in 0..<3 {
        print(index)
     }

提示

在for-in循環結構中,如果in關鍵字后面是一個集合,則變量index會自動獲取集合中的元素;如果in關鍵字后面是一個范圍,則index獲取到的是從左向右依次遍歷到的范圍索引數。

主站蜘蛛池模板: 温州市| 保靖县| 淄博市| 乌苏市| 辉县市| 南丹县| 会泽县| 饶平县| 墨玉县| 子洲县| 澜沧| 巴里| 慈溪市| 潜山县| 南汇区| 朝阳区| 阿荣旗| 称多县| 秦安县| 德令哈市| 普宁市| 滨州市| 金门县| 桃园县| 文水县| 易门县| 乌拉特中旗| 宁陕县| 任丘市| 双峰县| 龙南县| 临漳县| 海口市| 旬邑县| 张家界市| 类乌齐县| 五原县| 嵊州市| 永平县| 扎赉特旗| 平武县|