[swift-evolution] New feature request: syntactic sugar for "if let" scoped self assignment

Chris Lattner clattner at apple.com
Tue Aug 30 13:32:37 CDT 2016


> On Aug 28, 2016, at 12:54 PM, Nicholas Exner via swift-evolution <swift-evolution at swift.org> wrote:
> 
> Dear Swift Evolution Group Members,
>          Recently, as I was reviewing some code that I wrote, I was wondering what the community’s thoughts are on the possible value of having a special “if let” self-assignment operator added to the language (such as =? ).  A sort of syntactic sugar that allows for optional unwrapping into a scoped variable of the same name as the variable in the larger scope.  Here is some before and after code of what I am contemplating:

This is out of scope for Swift 4 stage 1, but is also a commonly proposed feature (and we should probably add it to the commonly proposed feature list).  It is often rejected because it is favoring terseness over clarity by introducing new magic syntactic sugar.  

-Chris


> 
> Current:
> var str:String?
> str = "Hello"
> 
> if let str = str {
>     print(str)
> }
> 
> Abbreviated:
> var str:String?
> str = “Hello”   // Output is Hello, not Optional(“Hello”)
> 
> if let str =? {
>     print(str) // Output is also Hello, not Optional(“Hello”)
> }
> 
> The value that I perceive of adding this to the language would be to allow a short-hand way to unwrap in a “if let" conditional and allowing developers to reduce duplication when a unique variable name is not needed.  By the way, I’m a big fan of ternary operators which the community already sees of value.
> 
> Let me know your thoughts.  Is this something that could be put into a proposal?
> 
> Cheers,
> —Nick—
> .
> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160830/4c40dcf9/attachment.html>


More information about the swift-evolution mailing list