+1

"Explicit is better than implicit"

Daniel Duan
Sent from my iPhone

> On Jul 21, 2016, at 9:34 AM, Björn Forster via swift-evolution 
> <[email protected]> wrote:
> 
> +1
> 
> I think this helps making Swift code more robust and should be included in 
> Swift 3.
> 
> The scenario described by Xin is a real world and not an academic one.
> 
> Also, the change he proposes is a very small one, so you get "much bang for 
> the bucks" in my point of view.
> 
> Björn
> 
> Am Dienstag, 19. Juli 2016 schrieb Xin Tong via swift-evolution :
>> Hi, 
>> I would like to propose changing unicodescalar initializer to failable. 
>> Currently, when you pass an invalid value to the UnicodeScalar initializer 
>> the swift stdlib crashes the program by calling _precondition. This is bad 
>> if you construct a unicode scalar from unknown input.
>> As a result. I would like to propose to mark the initializer as failable and 
>> return nil in case of a failure. 
>> 
>> Currently, in the code below, the stdlib crashes the program by calling 
>> _precondition if codepoint is not a valid unicode.  
>> var string = “" 
>> let codepoint: UInt32 = 55357 // this is invalid 
>> let ucode = UnicodeScalar(codepoint) // Program crashes at this point. 
>> string.append(code)    
>> 
>> After marking the initializer as failable, users can write code like this. 
>> And the program will execute fine even codepoint is invalid.  
>> var string = "" let codepoint: UInt32 = 55357 // this is invalid
>> let ucode = UnicodeScalar(codepoint) 
>> if ucode != nil {    
>>   string.append(code!)
>> } else {    
>>   // do something else 
>> }
>> 
>> As the initializer is now failable, it returns an optional, so optional 
>> unchaining or forced unwrapping needs to be used.  Alternatively, its also 
>> possible to leave status quo and force the users to do input checks
>> before trying to construct a UnicodeScalar.  But i feel having failable 
>> initializer helps user to write more robust code.
>> -Xin  
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to