Swift 標(biāo)準(zhǔn)庫定義了許多可供使用的運(yùn)算符,其中大部分在 基礎(chǔ)運(yùn)算符 和 高級(jí)運(yùn)算符 中進(jìn)行了闡述。這里將描述哪些字符能用作運(yùn)算符。
運(yùn)算符由一個(gè)或多個(gè)以下字符組成:/、=、-、+、!、*、%、<、>、&、|、^、~、.。也就是說,標(biāo)記 =,->、//、/*、*/、. 以及一元前綴運(yùn)算符 & 屬于保留字,這些標(biāo)記不能被重寫或用于自定義運(yùn)算符。
運(yùn)算符兩側(cè)的空白被用來區(qū)分該運(yùn)算符是否為前綴運(yùn)算符(prefix operator)、后綴運(yùn)算符(postfix operator)或二元運(yùn)算符(binary operator)。規(guī)則總結(jié)如下:
a+b 和 a + b 中的運(yùn)算符+ 被看作二元運(yùn)算符。a ++b 中的 ++ 被看作前綴一元運(yùn)算符。a++ b 中的 ++ 被看作后綴一元運(yùn)算符。.,將被看作后綴一元運(yùn)算符。例如 a++.b 中的 ++ 被看作后綴一元運(yùn)算符(同理, a++ . b 中的 ++ 是后綴一元運(yùn)算符而 a ++ .b 中的 ++ 不是).
鑒于這些規(guī)則,運(yùn)算符前的字符 (、[ 和 { ;運(yùn)算符后的字符 )、] 和 } 以及字符 ,、; 和: 都將用于空白檢測(cè)。
以上規(guī)則需注意一點(diǎn),如果運(yùn)算符 ! 或 ? 左側(cè)沒有空白,則不管右側(cè)是否有空白都將被看作后綴運(yùn)算符。如果將 ? 用作可選類型(optional type)修飾,左側(cè)必須無空白。如果用于條件運(yùn)算符 ? :,必須兩側(cè)都有空白。
在特定構(gòu)成中 ,以 < 或 > 開頭的運(yùn)算符會(huì)被分離成兩個(gè)或多個(gè)標(biāo)記,剩余部分以同樣的方式會(huì)被再次分離。因此,在 Dictionary<String, Array<Int>> 中沒有必要添加空白來消除閉合字符 > 的歧義。在這個(gè)例子中, 閉合字符 > 被看作單字符標(biāo)記,而不會(huì)被誤解為移位運(yùn)算符 >>。
要學(xué)習(xí)如何自定義新的運(yùn)算符,請(qǐng)參考 自定義操作符 和 運(yùn)算符聲<