我使用let
和。在swift中创建了一个NSMutableArray
当我在mutableArray中添加addObject时,它会添加它,即使我
使用let
分配常量。任何人都可以解释let
如何在swift中工作吗?如果它不允许您稍后添加值,那么以下内容如何
代码工作?
let arr : NSMutableArray = [1,2,3,4,5]
arr.addObject(6)
println(arr)
答案 0 :(得分:11)
类是引用类型,NSMutableArray是一个类。
Foundation的NSMutableArray与Swift的Array不同:后者是值类型。
如果你创建一个常量NSMutableArray:
let ns: NSMutableArray = ["a", "b"]
然后这可行:
ns.addObject("c")
但这不是:
ns = ["d", "e"] // nope!
因为您可以更改引用的内容,但无法更改分配给常量的内容。
另一方面,使用Swift的数组:
let sw: [String] = ["a", "b"]
常量不能更改,因为它是一个值,而不是一个引用。
sw.append("c") // nope!
文档:Structures and Enumerations Are Value Types和Classes Are Reference Types
答案 1 :(得分:9)
let
与类一起使用时,意味着变量无法更改,例如,更改为另一个数组。如果您不希望阵列可编辑,请使用普通的NSArray而不是可变的阵列
let arr : NSMutableArray = [1,2,3,4,5]
arr = [1,2,3,4,5] //error trying to assign to a let variable that has already been assigned
arr.addObject(6) //fine because we are not changing what is assigned to arr, but we are allowed to change the object that is assigned to arr itself
我认为你对常量变量的理解有点过于严格。