Swift:将数组赋值给字典复制吗?

时间:2015-04-17 05:27:40

标签: swift

考虑这段代码,它将数组分配给字典值,然后附加到数组中。 (实际上它会遍历字符串中的字符;这是简化版本。)

var letterIndexes = [Character: [Int]]()

let letter: Character = "a"
var indexes: Array<Int>? = letterIndexes[letter]
if indexes == nil {
    indexes = Array<Int>()
    letterIndexes[letter] = indexes
}
indexes!.append(0)

letterIndexes的值现在为[ "a": 0 elements ]

我原以为[ "a": [ 0 ] ]

看起来letterIndexes[letter] = indexes制作了indexes的副本。我想避免在字典中进行不必要的查找。如果这不是一个问题,我可以在if后做letterIndexes[letter]!.append(0)并且它会起作用。

我误解了这里发生了什么吗?我在做一些蠢事吗?

1 个答案:

答案 0 :(得分:0)

docs州:

  

值类型是一种类型,在将值分配给变量或常量时,或者将值传递给函数时,将复制该值。

所以当您在

中指定indexes
letterIndexes[letter] = indexes

它会创建索引副本,因此附加到indexes不会修改letterIndexes