//我想在guard 改变num2的值.可是报错了
func demoGuard() {
let oNum: Int? = nil
guard var num2 = oNum else{
num2 = 10
return
}
}
num2 的作用域只在 guard 之后, 但是走到 else 里的时候就 return 了, 这时候改变 num2 的值有什么意义?我猜你是想改 oNum 的值? 这样的话, 你把 let oNum 改成 var oNum 就可以在 guard 里改了, 但是同样的是没有意义的。 如果你想改的值是一个外部调用时传进来的 inout 类型的参数的值,还有可能有意义。
这种需求很奇怪,倒还不如用??运算符
num2 = oNum ?? 10