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

4.1 初識運算符

運算符的作用在于將量值或者表達式結(jié)合在一起進行計算。Swift語言中的運算符按照其操作數(shù)的個數(shù)可以分為3類,分別為:

  • 一元運算符:一元運算符作用于一個操作數(shù),其可以出現(xiàn)在操作數(shù)的前面,例如正負運算符“+”“-”,邏輯非運算符“!”。
  • 二元運算符:二元運算符作用于兩個操作數(shù)之間,例如加減運算符“+”“-”等。
  • 三元運算符:三元運算符作用于三個操作數(shù)之間,經(jīng)典的三元運算符有問號、冒號運算符,其可以方便地實現(xiàn)簡單的判斷選擇結(jié)構(gòu)。

4.1.1 賦值運算符

賦值運算符應(yīng)該是在編程中出現(xiàn)頻率最高的運算符之一,在對任何量值進行賦值時,都需要使用到賦值運算符“=”。需要注意,“=”在Swift語言中是賦值運算符,并不是相等運算符,對于一些編程初學(xué)者,很容易將相等運算符“==”與賦值運算符“=”混淆使用。使用Xcode開發(fā)工具創(chuàng)建一個名為Operational的Playground文件,賦值運算符示例如下:

     //字符串賦值
     var str = "Hello, playground"
     //整型賦值
     var count = 5
     //元組賦值
     var group = (1,2,"12")
     //Bool賦值
     var bol = true

如果要將一個元組中的值依次賦給指定的量值,Swift中還支持使用解構(gòu)賦值的語法來進行賦值,示例如下:

     // 進行解構(gòu)賦值
     var (n1, n2, n3) = (1, 2, 3)
     print(n1, n2 ,n3) // 1, 2, 3

提示

賦值運算符用于值的傳遞,其結(jié)果是量值被賦了具體的值。相等運算符則用于比較操作,其會返回一個Bool類型的邏輯值。

4.1.2 基本算術(shù)運算符

基本算術(shù)運算符用于進行一些基本的數(shù)學(xué)運算,例如加、減、乘、除等。需要注意,Swift語言從2.2版本之后,刪除了自增運算符“++”與自減運算符“--”,目前版本的Swift語言中不可以使用這兩個運算符。Swift中支持的基本算術(shù)運算符示例如下:

     //相加運算
     1+2
     //相減運算
     2-1
     //相乘運算
     2*2
     //相除運算
     4/2
     //取余運算
     4%3

提示

取余運算符必須在整數(shù)間進行運算時使用。

將賦值運算符與基本算術(shù)運算符結(jié)合使用可以組合成復(fù)合賦值運算符,復(fù)合賦值運算符可以在一個表達式中完成一項基本運算與賦值的復(fù)合操作,示例如下:

     var tmp=1
     //加賦值復(fù)合運算
     tmp+=3  //tmp = tmp +3
     //減賦值復(fù)合運算
     tmp-=3  //tmp = tmp -3
     //乘賦值復(fù)合運算
     tmp*=3  //tmp = tmp *3
     //除賦值復(fù)合運算
     tmp/=3  //tmp = tmp /3
     //取余賦值復(fù)合運算
     tmp%=3  //tmp = tmp %3

除了上面提到的運算符外,正負運算符和數(shù)學(xué)中的正負號作用類似,負運算符會改變數(shù)據(jù)的正負性,正運算符會保持數(shù)據(jù)的正負性。示例如下:

     var a = 1
     var b = -2
     +b //-2
     -a //-1

提示

自增與自減運算符在Swift 2.2及之前版本可以使用,Swift 2.2版本后,基于代碼的可讀性與減少歧義的考慮,移除了這兩個運算符。

4.1.3 基本邏輯運算符

基本算術(shù)運算符進行數(shù)學(xué)上的算術(shù)操作,基本邏輯運算符進行邏輯運算操作。可以簡單理解為,邏輯運算就是生活中所定義的真與假。系統(tǒng)定義的基本邏輯運算符會返回一個Bool類型的邏輯值,因此,基本邏輯運算符組成的邏輯表達式在if判斷語句中經(jīng)常會用到。

Swift中支持的基本邏輯運算符有:邏輯與運算符“&&”、邏輯或運算符“||”、邏輯非運算符“!”三種,邏輯運算只在邏輯值(Bool類型值)之間進行,與、或、非三種運算中前兩者為二元運算符,需要有兩個Bool類型的操作數(shù),非運算符為一元運算符,需要有一個Bool類型的操作數(shù)。這三種運算符有如下特點:

  • 與:兩個操作數(shù)都為真,結(jié)果才為真,有一個操作數(shù)為假,則結(jié)果為假。
  • 或:兩個操作數(shù)有一個為真,則結(jié)果為真,兩個操作數(shù)都為假,則結(jié)果為假。
  • 非:操作數(shù)為真,則結(jié)果為假,操作數(shù)為假,則結(jié)果為真。

示例如下:

     var p1 = true
     var p2 = false
     //與運算 false
     p1&&p2
     //或運算 true
     p1||p2
     //非運算 false
     !p1

提示

與Objective-C語言不同,Swift語言中邏輯運算的操作數(shù)必須為嚴格的Bool類型。

4.1.4 比較運算符

Swift中的比較運算符用于兩個操作數(shù)之間的比較運算,其會返回一個Bool類型的邏輯值。基本的比較運算符有:等于比較運算符“==”、小于比較運算符“<”、大于比較運算符“>”、不等于比較運算符“!=”、小于等于比較運算符“<=”以及大于等于比較運算符“>=”。示例如下:

     1==2 //等于比較,返回false
     1<2  //小于比較,返回true
     1>2  //大于比較,返回false
     1 != 2 //不等于比較,返回true
     1<=2  //小于等于比較,返回true
     1>=2  //大于等于比較,返回false

Swift中對于元組的比較操作讀者需要注意:首先要比較的元組中的元素個數(shù)和對應(yīng)位置的元素類型必須相同,其次元組中每一個元素必須支持比較運算操作,示例代碼如下:

     var tp1 = (3,4,"5")
     var tp2 = (2,6,"9")
     var tp3 = ("1",4,5)
     tp1<tp2             //將返回false

上面的代碼中,元組實例tp1與元組實例tp2中的元素個數(shù)和對應(yīng)類型相同,且所有元素都支持比較運算操作,所以tp1與tp2可以進行比較運算。tp1與tp3雖然元素個數(shù)相同,但是tp1的第1個元素為整型,tp3的第一個元素為字符串類型,類型不同,所以不能進行比較運算。Swift在進行元組間的比較運算的時候,會遵守這樣一個原則:從第1個元素開始比較,如果比較出了結(jié)果,則不再進行后面元素的比較運算,直接返回結(jié)果Bool值,如果沒有比較出結(jié)果,那么繼續(xù)依次比較后面的元素,直到比較出結(jié)果為止。

4.1.5 條件運算符

條件運算符(三目運算符)是一種三元運算符,其可以簡便實現(xiàn)代碼中的條件選擇邏輯。例如如下代碼為一個簡單的條件選擇語句示例:

上面的代碼對變量m和n進行了比較,并將比較結(jié)果進行打印,如果使用條件運算符,上面的邏輯可以簡寫成如下模樣:

     print(m>n ? "m>n":"m<=n")

上面的代碼在語法上可以簡化為這樣的格式:條件?成立的代碼:不成立的代碼。

可以看到,條件運算符(三目運算符)只使用了一句代碼就完成了if-else結(jié)構(gòu)需要多句代碼才能完成的工作,其編寫效率很高。我們來分解一下條件運算符的組成結(jié)構(gòu),首先條件運算符需要有3個操作數(shù),其中第1個操作數(shù)必須為一個條件語句或者一個Bool類型的值,第2個和第3個操作數(shù)可以是任意類型的值或者一個有確定值的表達式,3個操作數(shù)由問號“?”和冒號“:”進行分割,當問號前的操作數(shù)值為真時,條件運算符運算的結(jié)果為冒號前的操作數(shù)的值,當問號前的操作數(shù)值為假時,條件運算符運算的結(jié)果為冒號后的操作數(shù)的值。

主站蜘蛛池模板: 保定市| 开封市| 长丰县| 四川省| 同仁县| 丹阳市| 淮滨县| 南岸区| 广南县| 玉屏| 洛扎县| 武山县| 黎川县| 建昌县| 汽车| 类乌齐县| 开封县| 时尚| 昌江| 林西县| 甘泉县| 临湘市| 邵武市| 从化市| 根河市| 宁阳县| 晋城| 洛宁县| 江油市| 珲春市| 宣威市| 侯马市| 平罗县| 甘洛县| 凉山| 祁连县| 石阡县| 墨竹工卡县| 全州县| 香格里拉县| 太白县|