- Swift 5從零到精通iOS開發(fā)訓(xùn)練營
- 張益琿編著
- 1877字
- 2022-07-27 18:32:10
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ù)的值。
- Puppet 4 Essentials(Second Edition)
- 深入核心的敏捷開發(fā):ThoughtWorks五大關(guān)鍵實踐
- Photoshop智能手機APP UI設(shè)計之道
- Java面向?qū)ο筌浖_發(fā)
- Visual Basic編程:從基礎(chǔ)到實踐(第2版)
- Apache Spark 2 for Beginners
- Scala編程實戰(zhàn)(原書第2版)
- Node.js:來一打 C++ 擴展
- 基于SpringBoot實現(xiàn):Java分布式中間件開發(fā)入門與實戰(zhàn)
- Test-Driven JavaScript Development
- 零基礎(chǔ)學(xué)C語言程序設(shè)計
- INSTANT Apache ServiceMix How-to
- Mastering VMware vSphere Storage
- Microsoft Hyper-V PowerShell Automation
- 項目實踐精解:Java核心技術(shù)應(yīng)用開發(fā)