Swift -- 运算符
2017-11-02 本文已影响0人
求知路上的小学生
Swift -- 运算符
- 运算符是检查、改变、合并值的特殊符号或短语。例如,加号( + )将两个数相加(如 let i = 1 + 2 )。更复 杂的运算例子包括逻辑与运算符 && (如 if enteredDoorCode && passedRetinaScan )。
- Swift 支持大部分标准 C 语言的运算符,且改进许多特性来减少常规编码错误。如:赋值符( = )不返回值,以 防止把想要判断相等运算符( == )的地方写成赋值符导致的错误。算术运算符( + , - , * , / , % 等)会 检测并不允许值溢出,以此来避免保存变量时由于变量大于或小于其类型所能承载的范围时导致的异常结果。
- Swift 还提供了 C 语言没有的表达两数之间的值的区间运算符( a..<b 和 a...b ),这方便我们表达一个区间 内的数值。
运算符分为一元、二元和三元运算符:
- 一元运算符对单一操作对象操作(如 -a )。一元运算符分前置运算符和后置运算符,前置运算符需紧跟在 操作对象之前(如 !b ),后置运算符需紧跟在操作对象之后(如 c! )。
- 二元运算符操作两个操作对象(如 2 + 3 ),是中置的,因为它们出现在两个操作对象之间。
- 三元运算符操作三个操作对象,和 C 语言一样,Swift 只有一个三元运算符,就是三目运算符( a ? b :
c)。- 受运算符影响的值叫操作数,在表达式 1 + 2 中,加号 + 是二元运算符,它的两个操作数是值 1 和 2 。
赋值运算符
赋值运算符( a = b ),表示用 b 的值来初始化或更新 a 的值:
let b = 10
var a = 5
a= b
// a 现在等于 10
如果赋值的右边是一个多元组,它的元素可以马上被分解成多个常量或变量:
let (x, y) = (1, 2)
// 现在 x 等于 1,y 等于 2
与 C 语言和 Objective-C 不同,Swift 的赋值操作并不返回任何值。所以以下代码是错误的:
if x = y {
// 此句错误, 因为 x = y 并不返回任何值
}
这个特性使你无法把( == )错写成( = ),由于 if x = y 是错误代码,Swift 能帮你避免此类错误发生。
算术运算符
Swift 中所有数值类型都支持了基本的四则算术运算符:
- 加法(+)
- 减法(-)
- 乘法(*)
- 除法(/)
1 + 2
5 - 3
2 * 3
10.0 / 2.5 // 等于 4.0
// 等于 3 // 等于 2 // 等于 6
与 C 语言和 Objective-C 不同的是,Swift 默认情况下不允许在数值运算中出现溢出情况。但是你可以使用 Sw ift 的溢出运算符来实现溢出运算(如 a &+ b )。
加法运算符也可用于 String 的拼接: "hello, " + "world" // 等于 "hello, world"
求余运算符
求余运算符(%)在其他语言也叫取模运算符。然而严格说来,我们看该运算符对负数的操作结果,「求余」比「取模」更合适些。
我们来谈谈取余是怎么回事,计算 9 % 4,你先计算出 4 的多少倍会刚
好可以容入 9 中:
图解求余数.png
Swift 的求余表达式:
9 % 4 // 等于 1
综合赋值运算符
同 C 语言,Swift 也提供把其他运算符和赋值运算(=)组合的组合赋值运算符
下面以组合加运算(+=)为例:
var a = 1
a += 2
// a 现在是 3
表达式 a += 2 是 a = a + 2 的简写,一个组合加运算就是把加法运算和赋值运算组合成进一个运算符里,同时完成两个运算任务。
注意:
复合赋值运算没有返回值,let b = a += 2这类代码是错误。这不同于上面提到的自增和自减运算符。
比较运算符(Comparison Operators)
所有标准 C 语言中的比较运算符都可以在 Swift 中使用:
- 等于(a == b)
- 不等于(a != b)
- 大于(a > b)
- 小于(a < b)
- 大于等于(a >= b)
- 小于等于(a <= b
注意: Swift 也提供恒等(===)和不恒等(!==)这两个比较符来判断两个对象是否引用同一个对象实例。
- 每个比较运算都返回了一个标识表达式是否成立的布尔值:
1 == 1 // true, 因为 1 等于 1
2 != 1 // true, 因为 2 不等于 1
2 > 1 // true, 因为 2 大于 1
1 < 2 // true, 因为 1 小于2
1 >= 1 // true, 因为 1 大于等于 1
2 <= 1 // false, 因为 2 并不小于等于 1
比较运算多用于条件语句,如if条件:
let name = "world"
if name == "world" {
print("hello, world")
} else {
print("I'm sorry \(name), but I don't recognize you")
}
// 输出 "hello, world", 因为 `name` 就是等于 "world"
注: 关于 if 等控制流语句,后面会讲到