<<Swift 巩固笔记>> 第2篇 基本运算符

139 阅读2分钟

天天摸鱼的我, 今天趁着摸鱼空间时间, 又把Swift的基本运算符看了一遍, 不知道这种看Swift的热度会坚持几天!

好玩的地方

1. 赋值都会没有返回值了, 更安全了

2. + 不单可作加法运算, 还可作字符串的连接运算, 还可当正号

3. 新开的区间运算符


赋值运算符

// 赋值运算符 不会返回任何值
var (x, y) = (1, 2)

// 所以这么写会出现编译错误
//if (x = y) {
//
//}

// 符合赋值运算符没有返回值
var a = 1;
//let b = a += 2; // 错误

+ 也可作连接运算符

// + 也可作为字符串的连接运算符
let s1 = "hello"
let s2 = " world"
let s3 = s1 + s2;
print(s3)

取余运算符

// 当对负数取余时, 符号会被忽略, 所以 a % b 和 a % -b 结果是相同的
print(9 % 4)
print(9 % -4)

恒等运算符 和 不恒等运算符

// === 恒等 !== 不恒等 用来判断, 两个对象是否引用同一个对象实例

元组的比较

// 元组的比较, 元素相同, 长度相同的元组进行比较, 从左到右逐值比较, 返回Bool值
// 在有Bool类型的元组不能被比较, 元素数超过7个也不能进行比较
let b1 = (1, "orange") < (2, "apple")
let b2 = (2, "apple") < (2, "bird")

空合运算符

// 空合运算符 (Nil Coalescing Operator)
// 只能用于可选类型
var s: String? = "world"

// 如果s不为nil, 则返回s!, 否则返回 hello
var ss = s ?? "hello" // var ss = (s != nil) ? s! : "hello"

// 相当于
//if s != nil {
//    ss = s!
//} else {
//    ss = "hello"
//}

print(ss)

区间运算符

// 区间运算符 (Range Operators)
// ... 闭区间运算符
// 包括1和5
for i in 1...5 {
    print("\(i) * 5 = \(i * 5)")
}

半开区间运算符

// ..< 半开区间运算符
// 包括1, 不包括5
for i in 1..<5 {
    print("\(i) * 5 = \(i * 5)")
}

单侧区间运算符

// 单侧区间
let names = ["zero", "hour", "kevin", "ray", "lee"]
let count = names.count

// ...在数字左边, 代表取出下标从 0 到 2 (包括2) 的元素
for name in names[...2] {
    print(name)
}

// ...在数字右边, 代表取出下标从 2(包括2) 的所有元素
for name in names[2...] {
    print(name)
}

// ..<在数字左边, 代表取出下标从0 到 2 (不包括2) 的元素
for name in names[..<2] {
    print(name)
}