赋值运算符
第一个运算符我们已经使用很久了。 =
赋值运算符。
a = b
意思是使用b的值初始化或者更新a的值。
import Foundation
// 初始化常量b
let b = 10
// 初始化变量a
var a = 5
// 使用b的值更新a的值
a = b
// print输出时,可以使用,分隔多个数据,一次输出。
print(a, b)
运行结果
10 10
如果赋值运算符右侧是元组的话,可以拆解成多个常量或变量,这个上一章我们已经见过了。
import Foundation
let (name, age) = ("hzclog", 18)
print(name, age)
运行结果
hzclog 18
算数运算符
Swift支持数字类型标准的四种运算符
- 加: +
- 减: -
- 乘: *
- 除: /
- 取余: %
print(1 + 1)
print(10 - 2)
print(3 * 5)
print(10 / 2)
print(10.0 / 2) // 做除法计算时,两个数都是整数,结果会舍弃小数部分;只要有一个是浮点数,结果就会保留小数。
print(10 % 3)
运行结果
2 8 15 5 5.0 1
加号支持字符串类型拼接
let a = "hello"
let b = "world"
print(a + b)
运行结果
helloworld
一元减运算符支持取负值
let number1 = 110
let number2 = -number1
print(number2)
let number3 = -number2
print(number3)
运行结果
-110 110
复合赋值运算符
将赋值运算符和算数运算符结合起来,就构成了复合赋值运算符。
比如加法运算符 +
与赋值运算符 =
构成运算符 +=
。 a += 1
相当于 a = a + 1
, 也就是将a的值加1以后, 重新赋值给a。
其他复合赋值运算符以此类推。
var number = 10
number += 1
print(number)
number -= 2
print(number)
number *= 3
print(number)
number /= 4
print(number)
number %= 5
print(number)
运行结果
11 9 27 6 1
比较运算符
Swift支持下面的比较运算符:
- 相等: a == b
- 不等: a != b
- 大于: a > b
- 小于: a < b
- 大于等于: a >= b
- 小于等于: a <= b
比较运算的结果返回的是 布尔值
, 即真或者假。 所以比较运算的结果常用于条件语句中。
1 == 1 // true
2 != 1 // true
2 > 1 // true
1 < 2 // true
1 >= 1 // true
2 <= 1 // false
逻辑运算符
逻辑运算符可以组合布尔值结果。
- 逻辑非: !
- 逻辑与: &&
- 逻辑或: ||
逻辑非
前缀运算符,将紧挨着的值做布尔值反转。 使用true变为false, false变为true。
let isPayed = false
print(isPayed) // false
let notPayed = !isPayed // false取反,赋值给notPayed
print(notPayed) // true
逻辑与
逻辑与 &&
两侧的值都是true, 整个表达式结果才是true; 否则就是false。
事实上, 如果第一个值为false, 甚至不会对第二个值求值。 因为无论如何, 表达式结果都不会为真, 这就是短路运算。
let zoneAllowed = false
let payed = true
print(zoneAllowed && payed) // false
尝试修改不同的变量值, 看看结果是否和预期一致。
逻辑或
逻辑或 ||
两个值中只要有一个为true, 整个表达式就是true; 全部为false时, 表达式的结果才是false。
同理, 如果第一个值已经是true, 也不会再对右边的值求值, 一样的短路运算。
let isRoot = true
let hasPassword = false
print(isRoot || hasPassword) // true
尝试修改不同的变量值, 看看结果是否和预期一致。
组合逻辑运算符
可以将多个逻辑运算符组合起来, 构成更长的复合表达式。
再长的表达式, 依旧是左关联的, 即首先计算最左边的子表达式。
let correctAccount = true // 输入正确的账号
let correctPassword = false // 输入了正确的密码
let isRoot = true // 管理员身份
let useSuperPassword = false // 使用了超级密码
print(correctAccount && correctPassword || isRoot || useSuperPassword) // true
这个看起来很长的表达式, 意思就是:
如果输入了正确的账号和密码,或者是管理员身份,或者持有超级密码,都可以满足条件。
当然最好的方式是, 在使用很长的逻辑运算表达式时, 使用圆括号表达明确意图。 所以下面这样相对更好一些:
(correctAccount && correctPassword) || isRoot || useSuperPassword
使用括号清晰的说明: 前两个值运算结果视为一种单独状态。 这样做不会影响输出, 但是可读性更好。 要知道, 代码可读性优先于简洁性。
下一章
本章主要说明了Swift中基本运算符的使用。 运算符在编程中扮演着至关重要的角色,因为它们是进行各种计算、操作和逻辑判断的基础。
下一章中, 我们一起看看字符串和字符。