Generic class that conforms to Comparable in Swift

前端 未结 2 620
耶瑟儿~
耶瑟儿~ 2021-01-02 18:37

I\'m attempting to create a simple generic node class that conforms to the Comparable protocol so that I can easily compare nodes without accessing their key. When I attempt

2条回答
  •  萌比男神i
    2021-01-02 18:57

    You're close! The Node class already specifies that for Node, D must conform to Comparable. Therefore, Node in the decl for == and < is redundant. Instead, you want to restrict the types that the operators can be invoked upon:

    func < (lhs: Node, rhs: Node) -> Bool {
        return lhs.key < rhs.key
    }
    
    
    func == (lhs: Node, rhs: Node) -> Bool {
        return lhs.key == rhs.key
    }
    
    class Node: Comparable {
    
        var key: D!
        var next: Node?
        var prev: Node?
    
        init(key: D) {
            self.key = key
        }
    }
    

提交回复
热议问题