Swifters:
        Take this simple Point type:

struct Point: Hashable {
    let x: Int
    let y: Int

    init(_ x: Int, _ y: Int) {
        self.x = x
        self.y = y
    }
}

Using the latest Swift 4.1 snapshot, the Hashable conformance is generated for 
me. Adding Comparable conformance like this:

extension Point: Comparable {
    static func < (lhs: Point, rhs: Point) -> Bool {
        return (lhs.x < rhs.x  && lhs.y <= rhs.y) || (lhs.x <= rhs.x  && lhs.y 
< rhs.y)
    }
}

Once this is implemented, (0, 2) <= (1,1) bizarrely evaluates as true, despite 
both < and == evaluating as false. Manually implementing <= fixes the issue.

static func <= (lhs: Point, rhs: Point) -> Bool {
    return lhs < rhs || lhs == rhs
}

This is pretty straightforward code, so am I missing something here?



Jon
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to