Swift:当你将NSMutable-与let结合使用时意味着什么?

时间:2015-06-01 12:52:07

标签: swift

在Swift中,let关键字表示不变性。对于编译器,为什么要合并letNSMutable

,这意味着什么?

e.g。

let nsArray: NSMutableArray = ["a", "b"];
nsArray.addObject("c")  // Still works

2 个答案:

答案 0 :(得分:3)

NSMutableArray是一个类,所以它是通过引用而不是通过值传递的:这里的常量是你的nsArray对象,而不是它包含的可变数组。

所以你可以做:

nsArray.addObject("c")

但你不能做:

nsArray = ["d", "e"]

答案 1 :(得分:2)

有趣的问题。这是因为您没有分配数组本身。如果您改为:

nsArray = ["a", "sb"]

然后你会得到一个编译器错误。这与此处的讨论有些相关:let Non-mutable array in swift