术语
- 一元运算符对单一操作对象操作,如
-a
一元运算符分前置运算符和后置运算符- 前置运算符需紧跟在操作对象之前,如
!b
- 后置运算符需紧跟在操作对象之后,如
c!
- 前置运算符需紧跟在操作对象之前,如
- 二元运算符操作两个操作对象,是中置的,因为它们出现在两个操作对象之间,如
2 3
- 三元运算符操作三个操作对象,和 C 语言一样,Swift 只有一个三元运算符,就是三目运算符,
a ? b : c
受运算符影响的值叫操作数,在表达式 1 2
中,加号
是二元运算符,它的两个操作数是值 1
和 2
赋值运算符
代码语言:javascript复制let a = 10
let (x, y) = (1, 2)
算术运算符
代码语言:javascript复制1 2
3 - 1
2 * 3
10 / 2
10 % 2
//字符串相加
"hello, " "world" // 等于 "hello, world"
组合赋值运算符
代码语言:javascript复制var a = 1
a = 2 //a = a 2
比较运算符
- 常见比较
1 == 1 // true
2 != 1 // true
2 > 1 // true
1 < 2 // true
1 >= 1 // true
2 <= 1 // false
- 比较运算多用于条件语句
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"
- 元组比较(元组内有bool值不可以比较) 如果两个元组的元素相同,且长度相同的话,元组就可以被比较。比较元组大小会按照从左到右、逐值比较的方式,直到发现有两个值不等时停止。如果所有的值都相等,那么这一对元组我们就称它们是相等的
(1, "zebra") < (2, "apple") // true,因为 1 小于 2
(3, "apple") < (3, "bird") // true,因为 3 等于 3,但是 apple 小于 bird
(4, "dog") == (4, "dog") // true,因为 4 等于 4,dog 等于 dog
注意: Swift 标准库只能比较七个以内元素的元组比较函数。如果你的元组元素超过七个时,你需要自己实现比较运算符
三目运算符
代码语言:javascript复制let m = 30
let n = 20
let result = m > n ? m : n //30
空合运算符
代码语言:javascript复制let a = 10
var b : Int? //默认值为 nil
let c = b ?? a //10
区间运算符
- 闭区间运算符
for index in 1...5 {
print(index)
} //1 2 3 4 5
- 半开区间运算符
for index in 1..<5 {
print(index)
} //1 2 3 4
- 单侧区间
for index in array[2...] {
print(index)
} //3 4 5
for index in array[...3] {
print(index)
} //1 2 3 4
for index in array[..<3] {
print(index)
}//1 2 3
逻辑运算符
代码语言:javascript复制let flag = false
if !flag {
print("pass")
} //pass
let flag = false
let flag1 = true
if flag || flag1 {
print("pass")
} //pass
if flag && flag1 {
print("pass")
}