当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift ===(_:_:)用法及代码示例


操作符

===(_:_:)

返回一个布尔值,指示两个引用是否指向同一个对象实例。

声明

func === (lhs: AnyObject?, rhs: AnyObject?) -> Bool

参数

lhs

比较参考。

rhs

另一个比较参考。

详述

此运算符测试两个实例是否具有相同的标识,而不是相同的值。对于值相等,请参阅等于运算符 (==) 和 Equatable 协议。

下面的示例定义了一个IntegerRef 类型,一个具有引用语义的整数类型。


class IntegerRef: Equatable {
    let value: Int
    init(_ value: Int) {
        self.value = value
    }
}


func ==(lhs: IntegerRef, rhs: IntegerRef) -> Bool {
    return lhs.value == rhs.value
}

因为IntegerRef 是一个类,所以可以使用identical-to 运算符(===)比较它的实例。此外,由于IntegerRef 符合Equatable 协议,因此还可以使用等于运算符(==)来比较实例。


let a = IntegerRef(10)
let b = a
print(a == b)
// Prints "true"
print(a === b)
// Prints "true"

identical-to 运算符 (===) 在比较两个对不同对象实例的引用时返回 false,即使这两个实例具有相同的值。


let c = IntegerRef(10)
print(a == c)
// Prints "true"
print(a === c)
// Prints "false"

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 ===(_:_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。