84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
//我想在guard 改变num2的值.可是报错了func demoGuard() {
let oNum: Int? = nil guard var num2 = oNum else{ num2 = 10 return }
}
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
num2 的作用域只在 guard 之后, 但是走到 else 里的时候就 return 了, 这时候改变 num2 的值有什么意义?我猜你是想改 oNum 的值? 这样的话, 你把 let oNum 改成 var oNum 就可以在 guard 里改了, 但是同样的是没有意义的。 如果你想改的值是一个外部调用时传进来的 inout 类型的参数的值,还有可能有意义。
这种需求很奇怪,倒还不如用??运算符
num2 = oNum ?? 10
num2 的作用域只在 guard 之后, 但是走到 else 里的时候就 return 了, 这时候改变 num2 的值有什么意义?我猜你是想改 oNum 的值? 这样的话, 你把 let oNum 改成 var oNum 就可以在 guard 里改了, 但是同样的是没有意义的。 如果你想改的值是一个外部调用时传进来的 inout 类型的参数的值,还有可能有意义。
这种需求很奇怪,倒还不如用??运算符