Swift стандартная реализация stdlib для операции Greate - PullRequest
0 голосов
/ 05 марта 2019
extension Decimal: LCDecimalPrecise {
public static func == (lhs: Decimal, rhs: Decimal) -> Bool {
    return !((lhs - rhs).doubleValue > LCMetricUnit.moneyPrecise ||
           (rhs - lhs).doubleValue > LCMetricUnit.moneyPrecise)
}

public static func < (lhs: Decimal, rhs: Decimal) -> Bool {
    return (lhs - rhs).doubleValue < -LCMetricUnit.moneyPrecise
}

public static func > (lhs: Decimal, rhs: Decimal) -> Bool {
    return (lhs - rhs).doubleValue > LCMetricUnit.moneyPrecise
}

}

после переопределения первых двух методов (> метод оператора игнорируется), а затем вызова метода, например, следующего:

 if Decimal(string: "1") > Decimal(string: "2") {//TODO sth}

Я думаю, что меньше (<) оператор будет ожидать вызова согласно <a href="https://github.com/apple/swift/blob/6fc4cef671947d1d2482951853f7f82854473d91/stdlib/public/core/Comparable.swift" rel="nofollow noreferrer"> документу и исходному коду ,

При отладке он не вызывается.Так странно!!!Наконец, мы реализуем большую работу, чтобы обойти эту проблему.

...