NSMutableArray 如何在 swift 中使用 let 添加对象
How can NSMutableArray add object using let in swift
我使用 let
在 swift 中创建了一个 NSMutableArray 并且
当我在 mutableArray 中添加 addObject 时,它会添加它,即使我
使用 let
分配一个常量。谁能解释一下 let
在 swift 中是如何工作的?如果它不允许您在以后增加价值,那么以下内容如何
代码有效?
let arr : NSMutableArray = [1,2,3,4,5]
arr.addObject(6)
println(arr)
免责声明:此回答仅适用于NS类型数据结构,完整图片请看@Eric D的回答
let
与 class 一起使用时仅表示变量不能更改,例如,更改为另一个数组。如果您不希望数组可编辑,请使用普通的 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
我觉得你对常量变量的理解有点太严格了。
类 是 引用类型 ,而 NSMutableArray 是 class。
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 and Classes Are Reference Types
我使用 let
在 swift 中创建了一个 NSMutableArray 并且
当我在 mutableArray 中添加 addObject 时,它会添加它,即使我
使用 let
分配一个常量。谁能解释一下 let
在 swift 中是如何工作的?如果它不允许您在以后增加价值,那么以下内容如何
代码有效?
let arr : NSMutableArray = [1,2,3,4,5]
arr.addObject(6)
println(arr)
免责声明:此回答仅适用于NS类型数据结构,完整图片请看@Eric D的回答
let
与 class 一起使用时仅表示变量不能更改,例如,更改为另一个数组。如果您不希望数组可编辑,请使用普通的 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
我觉得你对常量变量的理解有点太严格了。
类 是 引用类型 ,而 NSMutableArray 是 class。
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 and Classes Are Reference Types