> On Dec 19, 2015, at 2:15 PM, Radosław Pietruszewski via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> I was going to suggest something similar (a hard naming problem also):
> 
> if has foo {
>     // foo is now unwrapped and non-optional
> }
> 
> guard has foo else { return }
> 
> Does the same thing as `let foo = foo` in practice, but places it in a 
> somewhat different mental model. Instead of unwrapping and immediately 
> assigning to a new constant with the same name (which just looks kind of 
> silly, like some magic voodoo ritual), it sort of asserts that we “have” foo 
> (i.e. it’s not nil), and therefore from that point it can just be treated as 
> non-optional.
> 
> IMHO this, although introduces a new keyword, makes more sense than trying to 
> reuse “let” in a context where it seems nonsensical. Perhaps this would be 
> closer to Swift’s goals, by reducing very common boilerplate, but without 
> harming clarity in a way adding a new meaning to “let” would.
> 
> Curious to hear Chris Lattner’s opinion :-) 

IANACL (I am not a Chris Lattner) but, FWIW, several of us are uncomfortable 
with the idea that a single declared property might have different static types 
in different regions of code.

> 
> — Radek
> 
>> On 19 Dec 2015, at 21:31, Dennis Lysenko via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>> What if we made the keyword "unwrap"? 
>> 
>> if unwrap someViewController {
>> // now there is a shadowing nonoptional (unwrapped) variable of the same 
>> name only within this scope, boiling down to simple syntactic sugar for 
>> optional binding and it is fairly clear. 
>> } 
>> 
>> 
>> On Sat, Dec 19, 2015, 1:31 PM Kevin Wooten via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> As much fun as it to example with foo, I would argue the opposite when you 
>> use some real world variable names:
>> 
>> if let someInterestingViewConroller = someInterestingViewConroller {
>> }
>> 
>> vs
>> 
>> If let someInterestingViewConroller {
>> }
>> 
>> We know what let does and it should be enough to impart the necessary 
>> information for this statement.
>> 
>> When it comes to newcomers I think you'd be hard pressed to find somebody 
>> who'd be able to understand either form without teaching; so not losing much 
>> there.
>> 
>> 
>> On Dec 19, 2015, at 10:01 AM, Chris Lattner via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>>> 
>>>> On Dec 11, 2015, at 8:19 AM, Jeff Kelley via swift-evolution 
>>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>>> 
>>>> I’ve had similar ideas to this. Instead of ditching the if let syntax 
>>>> altogether, another approach would be to use the existing name if no new 
>>>> name is given, so that this code:
>>>> 
>>>>    if let foo = foo { /* use foo */ }
>>>> 
>>>> could become this code:
>>>> 
>>>>    if let foo { /* use foo */ }
>>>> 
>>>> In both cases, foo is non-optional inside the braces. If you gave it 
>>>> another name with the if let syntax, that would work as it does today.
>>> 
>>> Hi Jeff,
>>> 
>>> This is commonly requested - the problem is that while it does help reduce 
>>> boilerplate, it runs counter to the goal of improving clarity.
>>> 
>>> -Chris
>>> 
>>> 
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>  _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 
>  _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
-Dave



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

Reply via email to