我在本指南中阅读了这个简单的解释:
The value of a constant doesn’t need to be known at compile time,but you must assign it a value exactly once.
但我想要比这更多的细节。如果常量引用一个对象,我还可以修改其属性吗?如果它引用了一个集合,我可以添加或删除元素吗?我来自C#背景;它类似于readonly如何工作(除了能够在方法体中使用它),如果不是,它是如何不同的?
let有点像C中的const指针。如果使用let引用对象,可以更改对象的属性或调用方法,但是不能为该标识符分配不同的对象。
原文链接:https://www.f2er.com/swift/320679.html还有对集合和非对象类型的影响。如果引用一个使用let的结构体,则不能更改其属性或调用其任何mutation func方法。
使用let / var与集合非常类似于mutable / immutable Foundation集合:如果将数组分配给let,则不能更改其内容。如果您引用了一个字典与let,您不能添加/删除键/值对或为键分配一个新的值 – 它是真正不变的。如果要分配到下标,附加或以其他方式突变数组或字典,则必须使用var声明它。
(在Xcode 6 beta 3之前,Swift数组有一个奇怪的价值和参考语义的混合,当被分配给一个let时,它们是部分可变的 – 现在已经不复存在了)