参考资料与链接https://www.cnswift.org
赋值运算符
let b = 10
var a = 5
a = b
//如果赋值符号右侧是拥有多个值的元组,它的元素将会一次性地拆分成常量或者变量
let (x , y) = (1 , 2)
下面这种情况是不合法的
if x = y {
//x = y 并不会返回任何值
}
算数运算符
- (+)
- (-)
- (*)
- (/)
Swift 算术运算符默认不允许值溢出。你可以选择使用 Swift 的溢出操作符(比如 a &+ b )
来行使溢出行为。参见 溢出操作符
//加法运算符也支持String的拼接
"hello , " + "world"
余数运算符
- (%)
a % b 与 a % -b 能够获得相同的答案,当 b为负数时它的正负号被忽略掉了.
一元加号/减号运算符
+a
-b
组合赋值符号
var a = 1
a += 1
等价于
a = a + 2
比较运算符
- ( == )
- ( != )
- ( > )
- ( < )
- ( >= )
- ( <= )
注意
Swift 同时也提供两个等价运算符( === 和 !== ),你可以使用它们来判断两个对象的引用是否相同。
你同样可以比较拥有同样数量值的元组,只要元组中的每个值都是可比较的。
(1, "zebra") < (2, "apple") // true because 1 is less than 2
(3, "apple") < (3, "bird") // true because 3 is equal to 3, and "apple" is less than "bird"
(4, "dog") == (4, "dog") // true because 4 is equal to 4, and "dog" is equal to "dog"
注意
Swift 标准库包含的元组比较运算符仅支持小于七个元素的元组。要比较拥有七个或者更多元素的元组,你必须自己实现比较运算符。
三元条件运算符
question ? answer1 : answer2
是以下代码的简写
if question {
answer1
} else {
answer2
}
合并空值运算符
a ?? b
如果可选项 a 有值则展开,如果没有值,是 nil ,则返回默认值 b 。表达式 a 必须是一个可选类型。表达式 b 必须与 a 的储存类型相同。
是以下代码的简写
a != nil ? a! : b
- 如果 a 的值是非空的, b 的值将不会被考虑。这就是所谓的 短路计算 。
举例
let defaultColorName = "red"
var userDefinedColorName: String? // defaults to nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName is nil, so colorNameToUse is set to the default of "red"
区间运算符
闭区间运算符
a...b
for index in 1...5 {
print("\(index) times 5 is \(index * 5)")
}
半开区间运算符
a..<b (左闭右开区间)
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
print("Person \(i + 1) is called \(names[i])")
}
单侧区间
for name in names[2...] {
print(name)
}
for name in names[...2] {
print(name)
}
//半开区间运算符的单侧形式
for name in names[..<2] {
print(name)
}
同样可以检测单侧区间是否包含特定的值
let range = ...5
range.contains(7) // false
range.contains(4) // true
range.contains(-1) // true
逻辑运算符
- !
- &&
- ||
网友评论