[swift-evolution] Followup after in-the-field feedback for SE-0170
xiaodi.wu at gmail.com
Wed Jun 14 15:38:51 CDT 2017
In SE-0170, it states: "It is worth noting that `is` should follow the same
logic as `as?`." For clarity, does rolling back to the initial Swift 3
behavior mean that `NSNumber(value: 0.1) is Float == true`?
On Wed, Jun 14, 2017 at 3:13 PM, Philippe Hausler via swift-evolution <
swift-evolution at swift.org> wrote:
> After implementing the proposal https://github.com/apple/
> swift-evolution/blob/master/proposals/0170-nsnumber_bridge.md we have
> gotten some initial feedback.
> It seems that there is definitely a fair amount of confusion and heartache
> for dealing with Float and Double values being bridged.
> Specifically the cases like:
> NSNumber(value 0.1) as? Float
> which with the current implementation will return nil since the Double
> value 0.1 cannot be represented exactly as a Float.
> It seems like the overwhelming majority of users know full well that Float
> will result in a loss of precision (hence why they chose that type over
> Double). This means that the floating point bridges for Double, Float, and
> CGFloat should not be the pedantic “exactly” cases but instead infer the
> conversion intent of a lax/approximated version.
> So in short: for the betterment of the API ergonomics, the floating point
> types as destinations will be pulled back to their initial Swift 3 behavior.
> Additionally to aide appropriate migration to the appropriate
> truncating/exactly initializers the un-labeled, deprecated in Swift 4,
> plain init methods to the numeric types with an NSNumber will now be
> annotated with the suggested replacements.
> Thanks for your time and feedback,
> Philippe Hausler
> swift-evolution mailing list
> swift-evolution at swift.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the swift-evolution