Swift编程初学者:为什么在实现变量时我的循环中会出现错误?

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

当我尝试在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倍数(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