在Swift中,let
关键字表示不变性。对于编译器,为什么要合并let
和NSMutable
?
e.g。
let nsArray: NSMutableArray = ["a", "b"];
nsArray.addObject("c") // Still works
答案 0 :(得分:3)
NSMutableArray
是一个类,所以它是通过引用而不是通过值传递的:这里的常量是你的nsArray
对象,而不是它包含的可变数组。
所以你可以做:
nsArray.addObject("c")
但你不能做:
nsArray = ["d", "e"]
答案 1 :(得分:2)
有趣的问题。这是因为您没有分配数组本身。如果您改为:
nsArray = ["a", "sb"]
然后你会得到一个编译器错误。这与此处的讨论有些相关:let Non-mutable array in swift