[swift-evolution] Pitch: @autoreleasepool attribute for loops
david at alkaline-solutions.com
Mon Jan 11 11:39:41 CST 2016
I’ve pondered proposing adding break and continue as results from a closure the same way return and ErrorType are today, and a modifier flag on function declarations similar to “throws” to indicate support.
The main complexity seemed to be in supporting labels (as well as when to not support them - labels would only make sense when the closure was declared inline.) Another thought was that it did not make sense for closure-level return, break, and continue to all be available at once
> On Jan 9, 2016, at 1:21 PM, Greg Parker via swift-evolution <swift-evolution at swift.org> wrote:
>> On Jan 8, 2016, at 10:00 PM, Jacob Bandes-Storch via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> I sympathize with the problem statement, but I wonder if we should instead be considering ways of allowing control-flow statements (break, continue, return) to work from inside @noescape closures.
> @noescape is insufficient to allow that. You need more constraints on the closure's caller, perhaps even cooperation from the closure's caller depending on how the control flow is supposed to work.
> Off the top of my head:
> * The closure's caller can't call the closure more than once. Or if it does, it needs to participate in the control flow system somehow. (Example: what does `break` do in the middle of map().)
> * Return values are complicated. You might need to limit the system to void returning closures only.
> * Defining the closure in one place and handing it off in another is complicated. You might need to limit the system to closure literals only.
> Greg Parker gparker at apple.com <mailto:gparker at apple.com> Runtime Wrangler
> swift-evolution mailing list
> swift-evolution at swift.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the swift-evolution