使用 Guard

Version >= 2.0

Guard 检查条件,如果为 false,则进入分支。防卫检查分支机构必须通过 returnbreakcontinue(如适用)离开其封闭区块; 如果不这样做会导致编译器错误。这样做的好处是,当写入 guard 时,不可能让流量意外地继续(就像使用 if 一样)。

使用保护可以帮助保持较低的嵌套级别 ,这通常可以提高代码的可读性。

func printNum(num: Int) {
    guard num == 10 else {
        print("num is not 10")
        return
    }
    print("num is 10")
}

Guard 还可以检查是否有处于一个值可选 ,然后在外部范围解开它:

func printOptionalNum(num: Int?) {
    guard let unwrappedNum = num else {
        print("num does not exist")
        return
    }
    print(unwrappedNum)
}

Guard 可以使用 where 关键字组合可选的展开和条件检查:

func printOptionalNum(num: Int?) {
guard let unwrappedNum = num, unwrappedNum == 10 else {
    print("num does not exist or is not 10")
    return
}
print(unwrappedNum)
}