[swift-evolution] [Draft Proposal] A simplified notation for avoiding the weak/strong dance with closure capture lists
Jason Gregori
jasongregori at gmail.com
Fri Feb 12 14:08:24 CST 2016
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/b8275125/attachment.html>
More information about the swift-evolution
mailing list