码迷,mamicode.com
首页 > 其他好文 > 详细

[Swift] 数组恒等 === 的 bug?!

时间:2014-06-14 11:39:39      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:swift

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。


[Swift] 数组恒等 === 的 bug?!,布布扣,bubuko.com

[Swift] 数组恒等 === 的 bug?!

标签:swift

原文地址:http://blog.csdn.net/kesalin/article/details/30532433

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!