首页 > 代码库 > [Swift] 数组恒等 === 的 bug?!
[Swift] 数组恒等 === 的 bug?!
Swift 中的数组是由结构体实现的:
struct Array<T> : MutableCollection, Sliceable { typealias Element = T var startIndex: Int { get } var endIndex: Int { get } subscript (index: Int) -> T func generate() -> IndexingGenerator<T[]> typealias SliceType = Slice<T> subscript (subRange: Range<Int>) -> Slice<T> init(_ buffer: ArrayBuffer<T>) }
由上面的代码可以猜到,数组自身是不存放元素的,数组持有一个存放元素的 buffer(元素存储区)。
而数组的恒等 === 在文档中是这么说的:
Check whether two arrays or subarrays share the same storage and elements by comparing them with the identity operators (===
and !==
).
数组的恒等 === 判断即判断两个数组所指向的元素存储区是否相同。
但 XCode 6 Beta 测试下来,结果大为迥异:
var a = [1, 2, 3] var b = a var c = a println("a === a: \(a === a), b === c: \(b === c)");
结果为:
a === a: false, b === c: false
这应该是编译器的一个 BUG。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。