我已将此代码写入.playgraound
var a = [1, 2, 3]
var b = a
var c = a
if b === c
{
"b and c still share the same array elements."
}
else
{
"b and c now refer to two independent sets of array elements."
}
结果是" b和c现在引用两组独立的数组元素"但在" Swift编程语言" Apple说那个
下面的示例使用“same to”运算符(===)来检查b和c是否仍然共享相同的数组元素。
你能解释一下他们与众不同的原因吗?
答案 0 :(得分:2)
这本书说的原因
结果是" b和c现在引用两组独立的数组元素"
是本书前面的代码停止了b
和c
之间通过a
分配给他们两者的数组共享:
b.unshare() // Page 306, line 3
数组a
已从b
和c
取消共享,方法是在第305页的第1行附加一个元素。
使用显示的代码将打印"b and c still share the same array elements."
消息。
答案 1 :(得分:0)
b === c
测试c
如果您更改b
的其中一个元素,或者反之亦然,将会发生什么。在您的示例中,b === c
的计算结果为true,因此当您更改b
的元素时:
var a = [1, 2, 3]
var b = a
var c = a
b[1] = 10
您会看到c
:
c[1] // returns 10
您可以使用unshare()
方法确保b
引用独立的数组实例:
b.unshare()
b === c // returns false
b[2] = 10
c[2] // returns 3