为什么Swift常量可以用作循环索引?
我知道这个Swift代码是有效的:为什么Swift常量可以用作循环索引?,swift,Swift,我知道这个Swift代码是有效的: let index=0 对于(1…9)中的索引{ 打印(索引)//索引将值从1更改为9 } 但是如果你说 index+=index 你得到了错误 “无法分配给值:'index'是'let'常量” 那么,如果索引是一个常量,为什么可以在其值将发生变化的循环中使用它呢 那么,如果索引是一个常量,为什么可以在其值将发生变化的循环中使用它呢 您可以将index看作是每次通过循环新创建和初始化的,就像在循环体中声明的变量一样。在这里使用let是有意义的,因为通常您不会
let index=0
对于(1…9)中的索引{
打印(索引)//索引将值从1更改为9
}
但是如果你说
index+=index
你得到了错误
“无法分配给值:'index'是'let'常量”
那么,如果索引是一个常量,为什么可以在其值将发生变化的循环中使用它呢
那么,如果索引是一个常量,为什么可以在其值将发生变化的循环中使用它呢
您可以将index
看作是每次通过循环新创建和初始化的,就像在循环体中声明的变量一样。在这里使用let
是有意义的,因为通常您不会更改循环内的循环计数器
更新:编辑后,代码更有意义,pkamb的评论也更加清晰:您使用
let index=0
声明的索引
与for
循环中使用的索引
是不同的变量 您的让索引
和索引的引用名为索引
的完全不同的变量。如果删除让索引
,则索引
的仍然有效。索引的将在循环的每次迭代中重新声明。它不会改变值。我建议你在这篇文章中检查let和var之间的差异->非常好的澄清,谢谢!