How do I implement Swift's Comparable protocol?

前端 未结 3 1850
轮回少年
轮回少年 2020-12-28 13:45

How do I use the Comparable protocol in Swift? In the declaration it says I\'d have to implement the three operations <, <= and >=. I put all those in the class but it

3条回答
  •  失恋的感觉
    2020-12-28 14:33

    The Comparable protocol extends the Equatable protocol -> implement both of them

    In Apple's Reference is an example from Apple (within the Comparable protocol reference) you can see how you should do it: Don't put the operation implementations within the class, but rather on the outside/global scope. Also you only have to implement the < operator from Comparable protocol and == from Equatable protocol.

    Correct example:

    class Person : Comparable {
        let name : String
    
        init(name : String) {
            self.name = name
        }
    }
    
    func < (lhs: Person, rhs: Person) -> Bool {
        return lhs.name < rhs.name
    }
    
    func == (lhs: Person, rhs: Person) -> Bool {
        return lhs.name == rhs.name
    }
    
    let paul = Person(name: "Paul")
    let otherPaul = Person(name: "Paul")
    let ben = Person(name: "Ben")
    
    paul > otherPaul  // false
    paul <= ben       // false
    paul == otherPaul // true
    

提交回复
热议问题