发布于 2015-06-14 01:59:44 | 76 次阅读 | 评论: 0 | 来源: 网络整理

运算符

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>> 中没有必要添加空白来消除闭合字符 > 的歧义。在这个例子中, 闭合字符 > 被看作单字符标记,而不会被误解为移位运算符 >>

要学习如何自定义新的运算符,请参考 自定义操作符 和 运算符声明。学习如何重写现有运算符,请参考 运算符方法。


运算符语法语法
运算符 → 运算符字符 运算符 可选
运算符字符 → / | = | - | + | ! | * | % | < | > | & | | | ^ | ~ | .
二元运算符 → 运算符
前置运算符 → 运算符
后置运算符 → 运算符
 

最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务