在custom == operator中检查nill是否相等

时间:2016-08-29 23:26:28

标签: ios swift oop null operator-overloading

所以我有一个自定义运算符用于类的相等,如果它们都是nil我想返回true但是当我问左边或右边== nil时我的操作符被调用。还有其他更好的方法吗?

public func == (left: classXYZ?, right: classXYZ?) -> Bool {
    if left == nil && right == nil {
        return true
    }
    if left != nil && right != nil {
        return left!.uniquID == right!.uniquID
    }
    return false
}

1 个答案:

答案 0 :(得分:3)

以下是制作课程Equatable

的代码
class ClassXYZ: Equatable {
    let uniqueID: String

    init(uniqueID: String) {
        self.uniqueID = uniqueID
    }
}

func ==(left: ClassXYZ, right: ClassXYZ) -> Bool {
    return left.uniqueID == right.uniqueID
}

您不需要(也不能)明确指定nil == niltrue,它已经内置到Swift中,看看

let a: ClassXYZ? = nil
let b: ClassXYZ? = nil

print(a == b) // true