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