- 基本运算符
- 术语
- 赋值运算符
- 赋值运算 a = b,表示用b的值来初始化或更新a的值
let b = 10
var a = 5
a = b
//a 现在等于 10
如果赋值的右边是一个多元组,它的元素可以马上被分解多个常量或变量
let (x, y) = (1,2)
// x 等于 1, y 等于 2
//与 c & oc 不同,Swift的赋值操作并不返回任何值,所以一下代码是错误的
//if x = y {
// // 词句是错误的
//}
- 数值运算
- Swift 让所有数值类型都支持了基本的四则运算
- 加法 +
- 减法 -
- 乘法 *
- 除法
"hello, " + "world" // "hello, world"
- 求余运算
- 求余运算 a % b 是计算 b 的多少倍刚刚好可以容入 a , 多出来的那部分叫余数.
- 求余运算(%)在其他语言也叫取模运算.
9 % 4 // 1
-9 % 4 // -1
- 自增和自增运算
- 和 C 一样, Swift 也 供了方便对变量本身加 1 或减 1 的自增 ++ 和自减 – 的运算符.
- 每调用一次 ++i, i 的值就会加 1. 实际上, ++i 是 i = i + 1 的简写, 而 –i 是 i = i - 1 的简 写.
- ++ 和 –既是前置又是后置运算. ++i, i++, –i 和 i– 都是有效的写法.
- 当 ++ 前置的时候, 先自増再返回.
- 当 ++ 后置的时候, 先返回再自增.
var i = 0
++i //现在 i = 1
var c = 0
let d = ++c
print("\(c),\(d)") // c 和 d 现在都是 1
let e = c++
print("\(c),\(e)") // c 等于2, e 等于1
/*
* 单目负号
*/
let three = 3
let minusThree = -three //-3
let plusThree = -minusThree //3
//单目正号
let minusSix = -6
let alsoMinusSix = +minusSix //-6
//复合赋值
var aa = 1
aa += 2 //3
// a += 2 是 a = a + 2 的简写
- 比较运算
- 所有标准 C 中的比较运算都可以在 Swift 中使用.
- 等于 a == b
- 大于 a > b
- 小于 a < b
- 大于等于 a >= b
- 小于等于 a <= b
- Swift 也 供恒等 === 和不恒等 !== 这两个比较符来判断两个对象是否引用同一个 对象实例. 更多细节在 类与结构.
let name = "world"
if name == "world" {
print("hello,world")
} else {
print("I'm sorry \(name),but I don't recognize you")
}
// prints "hello, world"
- 三目条件运算
- 原型是 问题 ? 答案1 : 答案2.
- 它简洁地表达根据 问题 成立与否作出二选一的操作. 如果 问题 成立, 返回 答案1 的结 果; 如果不成立, 返回 答案 2 的结果.
*
let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20) // 90
- 区间运算符
- 闭区间运算符 a…b 定义一个包含从 a 到 b (包括 a 和 b)的所有值的区间.
for index in 1...5 {
print("\(index) * 5 = \(index * 5)" )
}
/**
1*5=5
2 * 5 = 10
3 * 5 = 15
4 * 5 = 20
5 * 5 = 25
*/
- 半闭区间
- 半闭区间 a..
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
print("Person \(i + 1) is called \(names[i])")
}
// Person 1 is called Anna
// Person 2 is called Alex
// Person 3 is called Brian
// Person 4 is called Jack
- 逻辑运算
- 逻辑非 !a
- 逻辑与 a && b
- 逻辑或 a || b
let allowedEntry = false
if !allowedEntry {
print("ACCESS DENIED")
}
//prints:"ACCESS DENIED\n"
//逻辑与: a && b 表达了只有 a 和 b 的值都为 true 时, 整个表达式的值才会是 true .
let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"
//逻辑或:a || b 是一个由两个连续的 | 组成的中置运算符. 它表示了两个逻辑表达式的其中 一个为 true, 整个表达式就为 true.
let hasDoorKey = false
let knowsOverridePassword = true
if hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"
//组合逻辑
if enteredDoorCode && passedRetinaScan || hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"