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>>
中沒有必要添加空白來消除閉合字符 >
的歧義。在這個例子中, 閉合字符 >
被看作單字符標記,而不會被誤解爲移位運算符 >>
。
要學習如何自定義新的運算符,請參考 自定義操作符 和 運算符聲明。學習如何重寫現有運算符,請參考 運算符方法。
運算符語法語法
運算符 → 運算符字符 運算符 可選
運算符字符 → / | = | - | + | ! | * | % | <** | **> | & | | | ^ | ~ | .
二元運算符 → 運算符
前置運算符 → 運算符
後置運算符 → 運算符