一尘不染

Swift中的“ let”关键字到底如何工作?

swift

我已经在指南中阅读了以下简单说明:

常量的值不需要在编译时就知道,但是您必须为它赋值一次。

但是,我想比这更详细。如果常量引用了一个对象,我是否仍可以修改其属性?如果它引用一个集合,是否可以在其中添加或删除元素?我来自C#背景;它与readonly工作方式类似(除了能够在方法主体中使用它),如果不是,则有什么不同?


阅读 274

收藏
2020-07-07

共1个答案

一尘不染

let有点像constC中的指针。如果使用引用对象let,则可以更改对象的属性或调用该对象的方法,但不能为该标识符分配其他对象。

let对集合和非对象类型也有影响。如果你引用structlet,你不能改变它的属性或调用它的任何mutating func方法。

对集合使用let/
var就像可变/不可变Foundation集合一样:如果将数组分配给let,则不能更改其内容。如果您使用引用字典let,则无法添加/删除键/值对或为键分配新值-
这确实是不可变的。如果要分配数组,字典中的下标,追加或以其他方式对数组或字典进行突变,则必须使用进行声明var

(在Xcode 6 beta 3之前,Swift数组具有值和引用语义的怪异组合,并且在分配给let-时已经变得部分可变了。)

2020-07-07