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"> документу и исходному коду ,
При отладке он не вызывается.Так странно!!!Наконец, мы реализуем большую работу, чтобы обойти эту проблему.