> On Dec 30, 2015, at 5:19 PM, Kevin Ballard via swift-evolution 
> <[email protected]> wrote:
> 
> On Wed, Dec 30, 2015, at 03:12 PM, Kevin Wooten via swift-evolution wrote:
>>>>  
>>>> Another possibility I've thought of is defining `defer { val }` to 
>>>> guarantee that val remains alive until the defer fires on scope exit. That 
>>>> might let us leave `defer` as the one "guarantee something happens exactly 
>>>> at scope exit" language construct.
>>  
>> What about this…
>>  
>> defer let val = grabOrCreateSomething() {
>>   return;
>> }
>>  
>> Seems natural once you learn guard.
>  
> Natural? I have no idea what you're expecting that expression to actually do. 
> What is a "defer let”?

I think the idea is that a local variable declared with a `defer` modifier has 
its lifetime extended until the scope exits.  It is a slightly more compact 
version of what Joe suggested.  But I agree that it has potential for confusion 
- it reads like it is deferring the initialization of `val` until the scope 
exits which would be rather pointless.

I do like the idea of making the extended lifetime part of the local variable 
declaration but I’m not sure about how this specific syntax reads.

>  
> -Kevin
>  
> 
> _______________________________________________
> 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