[swift-evolution] [Proposal] Scoped resources (like C# using statement)
Kevin Wooten
kdubb at me.com
Wed Dec 30 18:02:36 CST 2015
> On Dec 30, 2015, at 4:23 PM, Matthew Johnson via swift-evolution <swift-evolution at swift.org> wrote:
>
>
>> On Dec 30, 2015, at 5:19 PM, Kevin Ballard via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> 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.
>
Given our discussion that’s definitely the gist of it, but I do stand corrected. I guess I meant the syntax felt “familiar” to guard, but I'd agree upon reflection it doesn’t read well.
> 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
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
> _______________________________________________
> 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/20151230/d3ca8c05/attachment.html>
More information about the swift-evolution
mailing list