运算符(operator)是用于检查、更改或组合值的特殊符号或短语。例如,加法运算符(+)求两个数字的加和(用例let i = 1 + 2)。更复杂的例子包括逻辑与(logicalAND)运算符&&(用例 if 已输入门禁密码 && 已通过视网膜扫描) 以及自增运算符 ++i,后者是将 i 存储的值加上 1 的便捷写法。
Swift 支持标准 C 的大多数运算符,并改进了部分行为特性,以避免常见的编码错误。赋值运算符(=)不会返回值,这样可避免在打算使用等于运算符(==)的地方误用前者。算术运算符(+、-、*、/、% 等)会侦测并阻止值溢出,可避免处理超出可存储值域范围的数时出现意料之外的结果。如果需要支持溢出,可以选用 Swift 的溢出运算符,详见 溢出运算符。
与 C 语言不同,Swift 允许对浮点数求余(%)。Swift 还提供了两种 C 语言没有的范围运算符(a..b 与 a...b),作为表达值域范围的便捷写法。 本章讲解 Swift 中的常用运算符。高级运算符一章涉及了 Swift 的高级运算符,并讲解了如何自定义运算符,以及让标准运算符支持自定义类型的运算。
目录[隐藏] |
[编辑]术语
运算符分为一元、二元以及三元运算符:
- 一元运算符(unary operator)对单个目标进行运算(如 -a)。一元前缀运算符(unaryprefix operator)置于运算目标之前(如 !b),而一元后缀运算符(unary postfix operator)紧跟目标之后(如 i++)。
- 二元运算符(binary operator)对两个目标进行运算(如 2 + 3),它们属于中缀(infix)运算符,因为出现在运算对应的两个目标之间。
- 三元运算符(ternary operator)对三个目标进行运算。与 C 语言一样,Swift 只有一个三元运算符:三元条件运算符(即 a ? b : c)。
运算符操作的值称为运算数(operands)。在表达式 1 + 2 中,+ 符号是二元运算符,它的两个运算数为值 1与值 2。
[编辑]赋值运算符
赋值运算符(assignment operator,a = b)用 b 的值初始化或更新 a 的值:
var a = 5
a = b
// a 的值现在等于 10
如果赋值语句的右侧是包含多个值的元组,其元素可一次性提取为多个常量或变量:
// x 等于 1,y 等于 2
与 C / Objective-C 语言的赋值运算符不同,Swift 语言的运算符本身不会返回值。因此下面的语句不正确:
// 语句无效,因为“x = y”不会返回值
}
该特性可避免在希望使用等于运算符(==)的地方误用赋值运算符(=)。通过不承认 if x = y 的有效性,Swift 将帮助你避免代码中出现这样的错误。
[编辑]算术运算符
Swift 支持对所有数字类型使用四种标准的算术运算符(arithmeticoperator):
- 加法(+)
- 减法(-)
- 乘法(*)
- 除法(/)
5 - 3 // 等于 2
2 * 3 // 等于 6
10.0 / 2.5 // 等于4.0
与 C / Objective-C 语言的算术运算符不同,Swift 的算术运算符默认不允许值溢出。若要支持溢出特性,可以使用 Swift 的溢出运算符(如 a &+ b)。参见 溢出运算符。
加法运算符还支持 String 连接:
可以将两个 Character 值相加,或将一个 Character 值与一个 String 值相加,得到新的 String 值: