Optional

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()
}

你可能感兴趣的:(Optional)