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