Skip to content

基本运算符

运算符是你用来检查、更改或组合值的特殊符号或短语。例如,加法运算符(+)将两个数字相加,如 let i = 1 + 2,逻辑与运算符(&&)则结合两个布尔值,如 if enteredDoorCode && passedRetinaScan

Swift支持你可能已经从C语言等其他语言中知道的运算符,并且提高了几项能力以消除常见的编程错误。赋值运算符(=)不返回值,以防止在需要等于运算符(==)时误用它。算术运算符(+,-,*,/,% 等等)会检测并禁止值溢出,以避免在处理可能大于或小于存储它们的类型允许的值范围的数字时出现意外结果。你可以通过使用Swift的溢出运算符选择性地使用值溢出行为,如在溢出运算符中所描述的。

Swift也提供了C语言中找不到的范围运算符,如 a..<b 和 a...b,作为表达值范围的快捷方式。

本章描述了Swift中的常见运算符。高级运算符覆盖了Swift的高级运算符,并描述了如何定义自己的自定义运算符并为自己的自定义类型实现标准运算符。

术语

运算符是一元的、二元的或三元的:

一元运算符对单一目标进行操作(如 -a)。一元前缀运算符紧跟在其目标前(如 !b),一元后缀运算符紧跟在其目标后(如 c!)。

二元运算符对两个目标进行操作(如 2 + 3),因为它们出现在两个目标之间,所以是中缀的。

三元运算符对三个目标进行操作。像C语言一样,Swift只有一个三元运算符,即三元条件运算符(a ? b : c)。

运算符影响的值是操作数。在表达式 1 + 2 中,+ 符号是一个中缀运算符,其两个操作数是值 1 和 2。

赋值运算符

赋值运算符(a = b)用 b 的值初始化或更新 a 的值:

swift
let b = 10
var a = 5
a = b
// a 现在等于 10

如果赋值的右侧是一个包含多个值的元组,那么它的元素可以一次性被分解为多个常量或变量:

swift
let (x, y) = (1, 2)
// x 等于 1,y 等于 2

与C和Objective-C中的赋值运算符不同,Swift中的赋值运算符本身不返回值。下面的语句是无效的:

swift
if x = y {
// 这是无效的,因为x = y不返回值。
}

这个特性防止了在实际上意图使用等于运算符(==)时误用赋值运算符(=)。通过使 if x = y 无效,Swift帮助你避免在代码中出现这类错误。

算术运算符

Swift支持所有数字类型的四种标准算术运算符:

  • 加法 (+)
  • 减法 (-)
  • 乘法 (*)
  • 除法 (/)
swift
1 + 2 // 等于 3
5 - 3 // 等于 2
2 * 3 // 等于 6
10.0 / 2.5 // 等于 4.0

与C和Objective-C中的算术运算符不同,Swift的算术运算符默认不允许值溢出。你可以选择使用Swift的溢出运算符(如 a &+ b)来启用值溢出行为。参见溢出运算符。

加法运算符也支持字符串连接:

swift
"hello, " + "world" // 等于 "hello, world"