Arrays Xcode 6 b3/b4中的数组引用相等

Arrays Xcode 6 b3/b4中的数组引用相等,arrays,xcode,swift,Arrays,Xcode,Swift,我只是在操场上玩 这段代码是在beta 2和以前版本上编译的,但不是在beta 3或beta 4上编译的: var myArray = ["foo1", "foo2", "foo3"] var myArray2 = myArray myArray2 === myArray myArray2 += "hello" myArray2 === myArray 它声明类型[String]不符合协议AnyObject 我们在b3中读到: 数组已经完全重新设计为具有完全值语义,以匹配字典和字符串的行为

我只是在操场上玩

这段代码是在beta 2和以前版本上编译的,但不是在beta 3或beta 4上编译的:

var myArray = ["foo1", "foo2", "foo3"]

var myArray2 = myArray
myArray2 === myArray

myArray2 += "hello"
myArray2 === myArray
它声明类型[String]不符合协议AnyObject

我们在b3中读到:

数组已经完全重新设计为具有完全值语义,以匹配字典和字符串的行为。现在let数组是完全不可变的,var数组是完全可变的

所以说我们丢失了数组的引用相等运算符
==
是正确的吗


操作符
=
显然不是一回事,因为它比较数组元素。

是的,可以公平地说,我们丢失了数组的
==
。数组被设置为true值类型,这意味着它们在分配给新变量时总是被复制。这使得
==
毫无意义,因为它永远不会返回true


引用类型(或类)是唯一有意义的地方,因为它们是唯一可以有两个变量引用相同值的类型。这就是为什么错误指出数组不符合协议AnyObject
AnyObject
是所有类的协议。

谢谢,我缺少数组总是被复制的部分。现在删除
===
的决定对我来说更清楚了。
==
只适用于
(参考类型),而
数组
在beta 2中和之前的版本中是
结构
(值类型),这根本不正确。数组是一种混合体,只有在修改时才会被复制。