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