Swift编程初学者:为什么在实现变量时我的循环中会出现错误?
当我尝试在Xcode游乐场中运行代码时,会收到一条警告: 变量“n”从未发生突变;考虑改变为“让”常量。< /P> 首先,我正在更改循环体中的变量,那么为什么它告诉我要将其更改为let(常量)数据类型呢Swift编程初学者:为什么在实现变量时我的循环中会出现错误?,swift,function,loops,variables,Swift,Function,Loops,Variables,当我尝试在Xcode游乐场中运行代码时,会收到一条警告: 变量“n”从未发生突变;考虑改变为“让”常量。< /P> 首先,我正在更改循环体中的变量,那么为什么它告诉我要将其更改为let(常量)数据类型呢 func multiples (n : Int) { var n = 1 for _ in (3 ..< 1000) { var n = n + 1 let multiple3 = 3 * n print(multiple3) } } func
func multiples (n : Int) {
var n = 1
for _ in (3 ..< 1000) {
var n = n + 1
let multiple3 = 3 * n
print(multiple3)
}
}
func倍数(n:Int){
变量n=1
对于uu英寸(3..<1000){
变量n=n+1
设倍数3=3*n
打印(倍数3)
}
}
我正在更改循环体中的变量
不,你不是。循环体中的一个是不同的n
要解决这个问题,就要改变
var n = n + 1
到
这是两个名为
n
的不同变量。一个是不变的,并且为for循环的每个新迭代创建一个。您可以使用两个同名变量的原因是它们存在于不同的作用域中,而for循环中的变量在循环持续时间内临时替代循环外的变量,但仅在循环内。3小说明: a) 如果您仔细阅读来自Xcode的消息,您将了解VAR的生存期和使用情况。(变量‘n’从来没有变异过,考虑改为‘让常数’) b) 在不同的作用域中有两个同名的var c) 输入“for”时,左侧的n将使用外部范围中的n进行计算,因此内部n将始终为==2 d) 使用调试器,您将看到如图所示
谢谢,我的“不和谐”小组中有人也说过同样的话。
n = n + 1