[英]Swift Overload NSDecimalNumber operators
我想知道 Swift 是否有理由不只是重載NSDecimalNumber
的標准算術(+、-、*、<、> 等)運算符,而是選擇具有諸如adding
、 subtracting
等名稱的傳統方法。
我想重載這些運算符,這是一個好主意,潛在的缺點是什么?
編輯
顯然 Swift 3 添加了Decimal
類型。 Swift 3 也將 NS 放在一堆其他類型的前面,所以我認為Decimal
只是一個NSDecimal
而 NS 被丟棄,但事實並非如此,雖然它並沒有真正回答問題,但我認為使用Decimal
而不是NSDecimalNumber
對於 Swift 3 及更高版本,通常應該是一個很好的響應。 您可能要堅持使用NSDecimalNumber
的一個原因是,如果您有很多擴展並且不想在每次使用擴展方法時都進行橋接。
您是否要使用Decimal
而不是NSDecimalNumber
?
let d1 = Decimal(integerLiteral: 10)
let d2 = Decimal(integerLiteral: 2)
let result = d1 * d2 // 20
我必須保留舊的 NSDecimalValue 才能與 Core Data 一起使用。 我希望能夠使用比較,所以我添加了這個擴展:
extension NSDecimalNumber: Comparable { // Comparable adds <=, >=, and >
public static func ==(lhs: NSDecimalNumber, rhs: NSDecimalNumber) -> Bool {
return lhs.compare(rhs) == .orderedSame
}
public static func <(lhs: NSDecimalNumber, rhs: NSDecimalNumber) -> Bool {
return lhs.compare(rhs) == .orderedAscending
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.