关于swift里两个object的比较

Swift里有没有办法来比较两个object是不是“相等”(不是一定要===)?
以下面的代码举例,person2和3所有的数值都是一样的,那么2==3就成立。

class Person {
    var firstName: String
    var lastName: String
    var height: Float
    var weight: Float
    
    init(firstName: String, lastName: String, height: Float, weight: Float) {
        self.firstName = firstName
        self.lastName = lastName
        self.height = height
        self.weight = weight
    }
}

var person1 = Person(firstName: "Jim", lastName: "Gordon", height: 180, weight: 85)
var person2 = Person(firstName: "Tom", lastName: "Green", height: 170, weight: 70)
var person3 = Person(firstName: "Tom", lastName: "Green", height: 170, weight: 70)

可以写一个下面的方法,但是这个方法要放到上面Person的大括号外面才行,有没有办法在这个类的声明里就直接定义怎么来比较这个类?

func ==(lhs: Person, rhs: Person) -> Bool {
    return (lhs.height == rhs.height) && .. && ..
}
阅读 3.4k
1 个回答

如果希望实现Equatable协议,请定义全局 == 运算符重载

func == (left: test, right: test) -> Bool
{
    if left.C == right.C
    {
        return true
    }
    else
    {
        return false
    }
}

class test:Equatable{
    let C: Double = 0.0
}

如果想在类内实现

class test:Equatable{
    let C: Double = 0.0
    func equalTo(object:test)->Bool{
        return object.C == self.C
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进