运算符条件语句
运算符
分为以下几种运算符
算术运算符
比较运算符
逻辑运算符
位运算符
赋值运算符
区间运算符
其他运算符
只介绍区间运算符,其他运算符和其他语言差不多。
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 语句