New feature request: syntactic sugar for "if let" scoped self assignment

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

···

On Aug 28, 2016, at 12:54 PM, Nicholas Exner via swift-evolution <swift-evolution@swift.org> wrote:

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@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution