[swift-evolution] [Draft Proposal] A simplified notation for avoiding the weak/strong dance with closure capture lists

Jonathan Tang jonathan.d.tang at gmail.com
Fri Feb 12 14:12:50 CST 2016


No strong objection, although I like "guard" because it implies that the
first statement in the closure is an implicit guard on the value captured.

On Fri, Feb 12, 2016 at 12:08 PM, Jason Gregori <jasongregori at gmail.com>
wrote:

> What about dropping "guard"? [reconstitute self] (I'll look in the
> thesaurus later today).
>
> On Feb 12, 2016, at 11:57 AM, Jonathan Tang <jonathan.d.tang at gmail.com>
> wrote:
>
> +1 to the proposal as it stands, including dropping the "else" or
> extending to non-void closures.  If they turn out to be a problem, another
> proposal could be written for them at a later date.
>
> I don't really like the idea of adding another word in there, either
> [guard weak self] or [guard reconstitute self].  To me, [guard self] is
> another capture semantics, just like [weak self] and [unowned self], and I
> find it easier to remember if I can mentally put it in the set of capture
> semantics than if I mentally hang it off of [weak self] as a special case.
> I don't think there's any reasonable phrase that will explain exactly what
> this does without people having to spend a few minutes reading the manual
> and absorbing the information, so I'd rather optimize for conciseness for
> those who've done this rather than clarity for those who haven't.
>
> On Fri, Feb 12, 2016 at 11:08 AM, Jason Gregori via swift-evolution <
> swift-evolution at swift.org> wrote:
>
>>
>>
>> On Fri, Feb 12, 2016 at 10:34 AM, Erica Sadun <erica at ericasadun.com>
>> wrote:
>>
>>> How about
>>>
>>> guard reconstitute self else { return }
>>>
>>
>> I like the idea behind this but I feel like a line inside the block can't
>> really dictate whether self is captured weakly or not. Unless your saying
>> put this in the bracket part?
>>
>> [guard reconstitute self] ? That works for me.
>>
>>
>> PS: I got here from your blog post, thanks!
>>
>>
>>> -- E
>>>
>>> On Feb 12, 2016, at 11:28 AM, Jason Gregori via swift-evolution <
>>> swift-evolution at swift.org> wrote:
>>>
>>> I like Kenny and Kurt's points about handling the majority case and
>>> keeping the syntax simpler.
>>>
>>> I feel like most of the time I want to break a retain cycle is for a
>>> completion block which returns void. Can we just handle that case and get
>>> rid of the else?
>>>
>>> Also, I don't think [guard self] is self explanatory enough. I think
>>> weak should be in there so it's much more obvious you are doing the
>>> weak/strong dance with self, otherwise it looks like you are guarding
>>> against a regular optional being nil.
>>>
>>> So:
>>>
>>> [guard weak self, other]
>>> _______________________________________________
>>> swift-evolution mailing list
>>> 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/20160212/c6cf22f0/attachment.html>


More information about the swift-evolution mailing list