Skip to content
On this page

运算符条件语句

运算符

分为以下几种运算符

  • 算术运算符

  • 比较运算符

  • 逻辑运算符

  • 位运算符

  • 赋值运算符

  • 区间运算符

  • 其他运算符

只介绍区间运算符,其他运算符和其他语言差不多。

TIP

注意:swift3 中已经取消了 ++--

区间运算符

区间运算符分为:

  • 闭区间运算符

  • 半开区间运算符

对应示例:

swift
import Cocoa

print("闭区间运算符:")
for index in 1...5 {
    print("\(index) * 5 = \(index * 5)")
}

print("半开区间运算符:")
for index in 1..<5 {
    print("\(index) * 5 = \(index * 5)")
}

运行结果:

swift
闭区间运算符:
1 * 5 = 5
2 * 5 = 10
3 * 5 = 15
4 * 5 = 20
5 * 5 = 25
半开区间运算符:
1 * 5 = 5
2 * 5 = 10
3 * 5 = 15
4 * 5 = 20

运算符优先级

基本的优先级需要记住:

  • 指针最优,单目运算优于双目运算。如正负号。

  • 先乘除(模),后加减。

  • 先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7 等价于 (1 << (3 + 2))&7

  • 逻辑运算最后计算

Swift 运算符优先级 (从高到低):

运算符实例
位运算符>> &<< &>> >>
乘法运算符&* % & * /
加法运算符| &+ &- + - ^
区间运算符..< ...
类型转换运算符is as
nil 的聚合运算??
比较运算符!= > < >= <= === ==
逻辑与运算符&&
逻辑或运算符||
波浪箭头~>
三元运算符?:
箭头函数( )
赋值运算符|= %= /= &<<= &>>= &= *= >>= <<= ^= += -=

合并空值运算符 ??

  • 合并空值运算符 a ?? b 如果可选项 a 有值则展开,如果没有值,是 nil,则返回默认值 b

  • 表达式 a 必须是一个可选类型,表达式 b 必须与 a 的存储类型相同

  • 合并空值运算符,实际上是三元运算符作用到 Optional 上的缩写 a != nil ? a! : b

  • 如果 a 的值是非空,b 的值将不会被考虑,也就是合并空值运算符是短路的

swift
var str : [String]?
let k = ["test"] as? [String] ?? ["str1", "str2", "str3"]
print(k)
let s = str as? [String] ?? ["str1", "str2", "str3"]
print(s)

执行结果:

swift
["test"]
["str1", "str2", "str3"]

条件语句

条件语句和其他语言差不多

  • if 语句

  • if ... else 语句

  • if ... else if ... else

  • 内嵌 if 语句

  • switch 语句