on Tue May 30 2017, Greg Parker <gparker-AT-apple.com> wrote:

>> On May 26, 2017, at 12:04 AM, Xiaodi Wu via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>> 
>> I've often wondered if even just "bitPattern" might suffice, as the 
>> truncating or extending of it
> should not be particularly surprising.
>
> Being explicit about bit pattern truncation or extension is
> valuable. It helps catch bugs where the bit count is not what the
> author expected. In Swift it is especially important for types like
> Int and CGFloat which have platform-dependent sizes.
>
>     let x: Int64 = …
>     let y = Int(bitPattern: x) // if truncation is implicit then this may be 
> surprising on 32-bit
> platforms
>
>     let a: UInt32 = …
>     let b = Int(bitPattern: a) // if zero- or sign-extension is implicit then 
> this may be surprising
> on 64-bit platforms

Yeah, but we now have generic conversion constructors:

    Int(extendingOrTruncating: x)

I think that loses most of the value of the labels.  The only reason
I've ever used this form is for truncation, FWIW.

-- 
-Dave
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to