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

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í)。

主站蜘蛛池模板: 洛阳市| 盐津县| 亳州市| 治县。| 离岛区| 拜泉县| 颍上县| 定襄县| 安康市| 昌吉市| 棋牌| 禄丰县| 云安县| 武隆县| 梁山县| 沭阳县| 曲阳县| 称多县| 石狮市| 陇南市| 湘阴县| 基隆市| 邵武市| 苗栗市| 封丘县| 定州市| 仲巴县| 若羌县| 杭锦旗| 通榆县| 泸溪县| 东光县| 图们市| 柘城县| 永和县| 五常市| 洪洞县| 张北县| 赞皇县| 河津市| 武山县|