来自苹果文档“Learn the Essentials of Swift
常量是在声明
第一次,而变量是一个可以改变的值。常数是
称为不可变,意味着它不能更改,并且
变量是可变的。如果你知道一个值不需要改变
在代码中,将其声明为常量而不是变量。
但在REPL中,我可以做到:

 14> let favoriteNumber = 4
favoriteNumber: Int = 4
 15> let favoriteNumber = 5
favoriteNumber: Int = 5

我显然遗漏了一些东西:这种差异是与编译器或运行时有关,还是与其他因素有关?
ios - 如果常量是不可变的,为什么我可以使用let重新分配它们?-LMLPHP

最佳答案

我可以看出这给人的印象是你在改变一个常数的值,但实际上你并没有改变favoriteNumber的值。正在发生的是您正在声明一个新常量,其标识符与上一个声明的标识符相同。本质上,这隐藏了第一个声明,如果只有第二个最优数存在。如果您尝试以下操作:

let favoriteNumber = 4
favoriteNumber = 5

您将看到不允许更改常数的值。
如果RePL警告你重新声明一个现存的常量或变量,这可能是有帮助的。

10-04 20:07