Swift中的身份运算符

Tao*_*Tao 5 swift

如果a与c相同,b与c相同,为什么a与b不相同?

var a = [1, 2, 3]
var b = a
var c = a[0...2]
a === c                    // true
b === c                    // true
a === b                    // false
Run Code Online (Sandbox Code Playgroud)

如果a,b,c是常数:

let a = [1, 2, 3]
let b = a
let c = a[0...2]
a === c                    // true
b === c                    // true
a === b                    // true
Run Code Online (Sandbox Code Playgroud)

小智 0

正如@onevcat 所说,这可能是 Playground 的一个错误。如果更改a为引用类型的对象,则所有身份测试都将是true

class K {}
var a = [K(), K(), K()]
var b = a
var c = a[0...2]
a === c                    // true
b === c                    // true
a === b                    // true
Run Code Online (Sandbox Code Playgroud)

这意味着a, b&c共享相同的存储和元素。