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

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

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

4.2.1 空合并運算符

可選值類型(Optional)是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循環結構中,開發者常常會使用區間運算符來定義循環次數,示例如下:

提示

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

主站蜘蛛池模板: 农安县| 汉川市| 渝中区| 苍南县| 乌海市| 临汾市| 绥化市| 敖汉旗| 梅河口市| 广昌县| 英山县| 渝中区| 谷城县| 邻水| 大悟县| 吴桥县| 裕民县| 景东| 香港| 横峰县| 和田市| 涟源市| 罗源县| 兴和县| 海口市| 无极县| 云浮市| 新巴尔虎右旗| 黔东| 宣汉县| 滦平县| 弥渡县| 呼玛县| 醴陵市| 勐海县| 乐山市| 平遥县| 青田县| 华坪县| 朝阳区| 扎赉特旗|