簡體   English   中英

Swift 重載 NSDecimalNumber 運算符

[英]Swift Overload NSDecimalNumber operators

我想知道 Swift 是否有理由不只是重載NSDecimalNumber的標准算術(+、-、*、<、> 等)運算符,而是選擇具有諸如addingsubtracting等名稱的傳統方法。

我想重載這些運算符,這是一個好主意,潛在的缺點是什么?

編輯

顯然 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM