- Swift 4從零到精通iOS開發(fā)
- 張益琿
- 567字
- 2019-12-09 14:31:28
6.3 運(yùn)算符的優(yōu)先級(jí)與結(jié)合性
在小時(shí)候?qū)W習(xí)數(shù)學(xué)時(shí),老師總會(huì)強(qiáng)調(diào)四則運(yùn)算中的先乘除后加減、從左向右計(jì)算等規(guī)則。其實(shí)在Swift語言編程中,也有這樣的規(guī)則存在。例如,進(jìn)行如下混合運(yùn)算:

從上面演示的代碼中可以看出,Swift語言中的四則運(yùn)算也是先進(jìn)行乘除運(yùn)算后進(jìn)行加減運(yùn)算,運(yùn)算順序?yàn)閺淖笙蛴摇F鋵?shí)在Swift語言的運(yùn)算符體系中,有著優(yōu)先級(jí)與結(jié)合性的概念,運(yùn)算符的優(yōu)先級(jí)決定同一行代碼中出現(xiàn)多種運(yùn)算符時(shí)的計(jì)算順序,運(yùn)算符的結(jié)合性決定運(yùn)算符是從左向右運(yùn)算還是從右向左運(yùn)算。任何運(yùn)算符都有默認(rèn)的優(yōu)先級(jí),開發(fā)者自定義的運(yùn)算符也是如此,優(yōu)先級(jí)高的運(yùn)算符優(yōu)先執(zhí)行。對(duì)于結(jié)合性而言,由于前綴運(yùn)算符與后綴運(yùn)算符都只有一個(gè)操作數(shù),因此它只對(duì)中綴運(yùn)算符有意義。
表6-1和表6-2列出了Swift中所有運(yùn)算符的相關(guān)信息。
表6-1 Swift語言中的系統(tǒng)前綴運(yùn)算符

表6-2 Swift語言中的系統(tǒng)中綴運(yùn)算符

上面兩個(gè)表格中列舉了Swift語言系統(tǒng)定義的所有運(yùn)算符相關(guān)信息,無須專門記憶,在實(shí)際開發(fā)中需要使用時(shí)再來查表即可。其實(shí)更多情況下,開發(fā)者會(huì)直接使用小括號(hào)來決定表達(dá)式的執(zhí)行順序,這樣代碼也會(huì)更加直觀。
在重載運(yùn)算符操作時(shí),并不會(huì)改變?cè)\(yùn)算符的結(jié)合性和優(yōu)先級(jí),但對(duì)于自定義運(yùn)算符,開發(fā)者可以設(shè)置其結(jié)合性與優(yōu)先級(jí),示例如下:
infix operator ++{associativity left precedence 140}
associativity關(guān)鍵字用于聲明運(yùn)算符的結(jié)合性,可以選擇left或者right來定義成左結(jié)合性或者右結(jié)合性,precedence關(guān)鍵字用于聲明運(yùn)算符的優(yōu)先級(jí)。
- Java程序設(shè)計(jì)(慕課版)
- 程序員面試白皮書
- Learning Real-time Processing with Spark Streaming
- JavaScript高效圖形編程
- Python從小白到大牛
- Oracle Database In-Memory(架構(gòu)與實(shí)踐)
- Python測(cè)試開發(fā)入門與實(shí)踐
- 數(shù)據(jù)結(jié)構(gòu)(Python語言描述)(第2版)
- 深入淺出Android Jetpack
- PHP 編程從入門到實(shí)踐
- PHP 7+MySQL 8動(dòng)態(tài)網(wǎng)站開發(fā)從入門到精通(視頻教學(xué)版)
- Mastering Web Application Development with AngularJS
- 小程序,巧應(yīng)用:微信小程序開發(fā)實(shí)戰(zhàn)(第2版)
- INSTANT Silverlight 5 Animation
- 從0到1:HTML5 Canvas動(dòng)畫開發(fā)