> On Dec 20, 2016, at 8:32 AM, Alex Thurston via swift-users > <swift-users@swift.org> wrote: > > Swift 3 introduced the Decimal class, which at first I thought was supposed > to 'replace' NSDecimalNumber in Swift, like Error is the new NSError, etc. > However, upon further investigation, it's not clear to me that this is > actually the case. It appears that Swift 3's Decimal is more just an > NSDecimal, but with some bridging so it can use NSDecimalNumber's methods > when needed. What I'm wondering is, should I be replacing NSDecimalNumber in > my app with Decimal? Is Decimal the successor to NSDecimalNumber in Swift?
`Decimal` is actually a struct, not a class, and in fact it's just the Swift name for the `NSDecimal` struct in Objective-C. In Swift, functions like `NSDecimalAdd` are exposed as operators on `Decimal` and are used to satisfy the requirements of various numeric protocols like `SignedNumber`. The end result is that `Decimal` is a lot like `Int` or `Double`—it's a value type which can be conveniently used to do all sorts of math. `NSDecimalNumber`, then, is equivalent to `NSNumber`. > Since my app is doing a lot of formatting, it would require much casting > between Decimal and NSDecimalNumber, or adding of extensions to use, so I > don't think it would be natural/convenient without many extensions. Is Swift > planning to improve Decimal to be more usable with NumberFormatter, or other > object-oriented number APIs? Hopefully I have given enough information to > answer my question. Objective-C APIs which use `NSDecimalNumber` should be bridged to `Decimal`, just as `NSString` is bridged to `String`. That bridging may not work for category methods, though; you could expose those to Swift by writing an extension on `Decimal` which casts `self` to `NSDecimalNumber` and then calls through to your Objective-C methods. Similarly, you should be able to use `Decimal` with `NumberFormatter` by casting to `NSDecimalNumber`, just as you would cast `Int` or `Double` to `NSNumber` to use them with `NumberFormatter`. -- Brent Royal-Gordon Architechies _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users