17

是否可以为该自定义类中的自定义类重载等价 (==) 运算符。但是我知道有可能让这个运算符在类范围之外重载。欣赏任何示例代码。提前致谢。

4

2 回答 2

34

添加全局函数。例如:

class CustomClass {
    var id = "my id"
}

func ==(lhs: CustomClass, rhs: CustomClass) -> Bool {
    return lhs == rhs
}
func !=(lhs: CustomClass, rhs: CustomClass) -> Bool {
    return !(lhs == rhs)
}

在 Swift 2 中符合 Equatable 协议

class CustomClass: Equatable {
    var id = "my id"
}

func ==(left: CustomClass, right: CustomClass) -> Bool {
    return left.id == right.id
}

在 Swift 3 中遵循 Equatable 协议

class CustomClass {
    var id = "my id"
}

extension CustomClass: Equatable {
    static func ==(lhs: CustomClass, rhs: CustomClass) -> Bool {
        return lhs.id == rhs.id
    }
}
于 2015-03-04T06:49:07.000 回答
6

不,运算符使用全局函数重载。

于 2015-03-04T06:47:57.177 回答