//: Playground - noun: a place where people can play
import UIKit
// # 专门用语
// 赋值号=不会返回值,防止与==混淆
// # 赋值运算符
// # 算术运算符
// Swift默认不允许值溢出,可以用溢出操作符如a &+ b来实现溢出行为
// +运算符支持String的拼接:"hello, " + "world"
// %余数运算符。如果前者是负数,就考虑多少倍后者的最大倍数情况下余数是多少;如果后者是负数,直接无视负号
var nega = -9 % 4
var negative = -9 % -4
// 一元减号运算符(负号)后不要加空格
// # 组合赋值运算符
// # 比较运算符
// 元组可以按从左到右的顺序比大小,前提是元素可比并且小于7个
(1, "zebra") < (2, "apple")
// # 三元条件运算符
// question ? answer1 : answer2
// 整体返回为部分返回的值,好处是省去了一些中间步骤,代码简洁
// # 合并空值运算符
// a ?? b 是 a != nil ? a! : b 的缩写,a是一个可选类型,也可以是隐式展开可选类型。b与a的储存类型相同
var a : Int?
a ?? 666
// # 区间运算符
// trick: 遵循sequece协议才能在for-in中遍历
// 0...5 0..<5 遵循sequence和RangeExpression
// ...5(PartialRangeThrough类型) ..<5(PartialRangeUpTo类型) 不遵循Sequence,只遵循RangeExpression,也有contains(_),也可以将其作为collection的下标(通过生成index的range)
let names = ["Anna", "Alex", "Brian", "Jack"]
for i in 0..<names.count {
print("Person \(i + 1) is called \(names[i])")
}
for name in names[1...] {
print(name)
}
for name in names[..<3] {
print(name)
}
let range = 0...5
range.contains(7)
range.contains(4)
// # 逻辑运算符
// &&: 如果任意一个值是 false,那么整个表达式的结果会是 false。事实上,如果第一个值是 false,那么第二个值就会被忽略掉了,因为它已经无法让整个表达式再成为 true。这就是所谓的短路计算。短路计算的作用是第二个条件可以基于第一个。有时可被,取代。
// || 也是短路计算。
// && 和 || 是左相关的,要注意可读性,善用括号。
网友评论