基本运算符
本页内容包括:
<a name="术语"></a>术语
运算符有一元、二元和三元运算符。
- 一元运算符对单一操作对象操作(如
-a
)。一元运算符分前置运算符和后置运算符,前置运算符需紧排操作对象之前(如!b
),后置运算符需紧跟操作对象之后(如i++
)。 - 二元运算符操作两个操作对象(如
2 + 3
),是中置的,因为它们出现在两个操作对象之间。 - 三元运算符操作三个操作对象,和 C 语言一样,Swift 只有一个三元运算符,就是三目运算符
(a ? b : c)
。
<a name="赋值运算符"></a>赋值运算符
赋值运算(a = b)
,表示用b
的值来初始化或更新a
的值:
与 C 语言和 Objective-C 不同,Swift 的赋值操作并不返回任何值。所以以下代码是错误的:
if x = y {
// 此句错误, 因为 x = y 并不返回任何值
}
<a name="算数运算符"></a>算数运算符
Swift 中所有数值类型都支持了基本的四则算术运算:
- 加法(
+
) - 减法(
-
) - 乘法(
*
) - 除法(
/
)
与 C 语言和 Objective-C 不同的是,Swift 默认情况下不允许在数值运算中出现溢出情况。但是你可以使用 Swift 的溢出运算符来实现溢出运算(如a &+ b
)
加法运算符也可用于String的拼接.
求余运算符
求余运算(a % b)
是计算b的多少倍刚刚好可以容入a,返回多出来的那部分(余数)。
浮点数求余计算
不同于 C 语言和 Objective-C,Swift 中是可以对浮点数进行求余的。
8 % 2.5 // 等于 0.5
自增和自减运算
和 C 语言一样,Swift 也提供了对变量本身加1或减1的自增(++
)和自减(--
)的缩略算符。其操作对象可以是整形和浮点型。
- 当
++
前置的时候,先自増再返回。 - 当
++
后置的时候,先返回再自增。
<a name="组合赋值运算符"></a>组合赋值运算符
如同强大的 C 语言,Swift 也提供把其他运算符和赋值运算(=
)组合的复合赋值运算符,组合加运算(+=
)是其中一个例子:
<a name="比较运算符"></a>比较运算符
所有标准 C 语言中的比较运算都可以在 Swift 中使用,每个比较运算都返回了一个标识表达式是否成立的布尔值.
- 等于(
a == b
) - 不等于 (
a != b
) - 大于(
a > b
) - 小于(
a < b
) - 大于等于(
a >= b
) - 小于等于(
a <= b
)
Swift 也提供恒等===和不恒等!==这两个比较符来判断两个对象是否引用同一个对象实例。
<a name="三目运算符"></a>三目运算符
三目运算符的特殊在于它是有三个操作数的运算符,它的原型是 问题 ? 答案1 : 答案2
。它简洁地表达根据问题成立与否作出二选一的操作。如果问题成立,返回答案1的结果; 如果不成立,返回答案2的结果。
<a name="空和运算符"></a>空和运算符
空合运算符(a ?? b
)将对可选类型a
进行空判断,如果a
包含一个值就进行解封,否则就返回一个默认值b
.这个运算符有两个条件:
- 表达式
a
必须是Optional类型 - 默认值
b
的类型必须要和a
存储值的类型保持一致
空合并运算符是对以下代码的简短表达方法
a != nil ? a! : b
<a name="区间运算符"></a>区间运算符
闭区间运算符
闭区间运算符(a...b
)定义一个包含从a
到b
(包括a
和b
)的所有值的区间,b
必须大于a
。 闭区间运算符在迭代一个区间的所有值时是非常有用的,如在for-in
循环中.
for index in 1...5 {
println("\(index) * 5 = \(index * 5)")
}
半开区间运算符
半开区间(a..<b
)定义一个从a
到b
但不包括b
的区间。 之所以称为半开区间,是因为该区间包含第一个值而不包括最后的值。
<a name="逻辑运算符"></a>逻辑运算符
逻辑运算的操作对象是逻辑布尔值。Swift 支持基于 C 语言的三个标准逻辑运算。
- 逻辑非(
!a
) - 逻辑与(
a && b
) - 逻辑或(
a || b
)