guard 的好处
//Optional 本质上是一个枚举,.none(nil) , .some(T)
//有值会自动升级为.some , nil 会自动升级为 .none
//注意guard 的用法,如果要在多处用同一个 unwarping
let a: Int? = 1
guard let nextA = a else {
return
}
//以后都可以用nextA, 不用一直unwraping
闭包行为
//对比一下和JS的闭包行为, swift 闭包捕获的是值,而 JS 捕获的是对象
var array: [Closure] = []
for i in 0...5 {
array.append({ print(i)})
}
array[0]()
array[1]()
array[2]()
array[3]()
let funcArray = []
// for (let i in [0, 1, 2]){
//如果变成let 则是0,1, 2,var 则是2,2,2
for (var i in [0, 1, 2]){
funcArray[i] = ()=>{
console.log(i);
}
}
funcArray[0]();
funcArray[1]();
funcArray[2]();
Never 关键字
//Never 意味着永远不会正确返回
func returnNever(_ input: Int) -> Never {
guard input > 0 else {
fatalError()
}
fatalError()
}
网友评论