[swift-evolution] Reconsidering SE-0003 Removing var from Function Parameters and Pattern Matching

Dave Abrahams dabrahams at apple.com
Sun Jan 24 23:33:01 CST 2016

on Sun Jan 24 2016, David Waite <david-AT-alkaline-solutions.com> wrote:

>> On Jan 24, 2016, at 6:44 PM, Charles Srstka via swift-evolution
>> <swift-evolution at swift.org> wrote:
>>> On Jan 24, 2016, at 12:31 PM, Dave Abrahams via swift-evolution
>>> <swift-evolution at swift.org <mailto:swift-evolution at swift.org>>
>>> wrote:
>>> That's not the purpose; even though I am not a fan of prohibiting "var"
>>> there, I understand that the purpose of doing so is avoiding confusion,
>>> because some people believe they are getting a reference through which
>>> to mutate the contents of the original optional.
>> But that’s not what assigning something to a var means in any other
>> context. Why should it be any different here?
> In the case of "if let x = x { … }”, the shadowing/copying of the
> original value is not apparent - from the user perspective, the
> language just “knows” within the block to stop treating “x” like an
> optional.

That's one reason I'm not a fan of using the same identifier in both
places in these examples.  I've usually found the code to be a little
clearer anyway, when I take the time to find a different name.

FWIW-ly y'rs,


More information about the swift-evolution mailing list