2016-08-29 92 views
1

所以我有一个类平等的自定义操作,我想,如果他们不过是未缴当我问,如果向左或向右==无我的操作被调用返回true。是否有另一种或更好的方法来做到这一点?检查定制nill平等==操作符

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 
} 
+2

顺便说一句,为什么你不这样做:'return left?.uniquID == right?.uniquID'?这将返回true如果两者都是零。 – ozgur

+0

使用无校验构建到另一个类,聪明。该deff工作。但是,如果我不能这样做,我怎么会做一个零检查出去打电话给我自己的运营商 – CWineland

+0

你使用哪个版本的Swift? –

回答

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,它已经内置到斯威夫特,看看

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

print(a == b) // true