[swift-evolution] [Review] SE-0073: Marking closures as executing exactly once
Dave Abrahams
dabrahams at apple.com
Fri May 6 21:37:08 CDT 2016
on Fri May 06 2016, Andrew Bennett <swift-evolution at swift.org> wrote:
> Hi Dave,
>
> Sorry, Dave, sending a second time as I forgot to Reply-All.
>
> I agree, this proposal doesn't allow multiple closures where only one of them
> should be run, and it should only be run once. I personally don't think lacking
> that functionality is worth blocking this proposal for, another proposal can be
> built on top of this if it is desired.
>
> These cases can also be handled by a more meaningful if/switch statement, using
> @noescape(once), for example:
> let x: Int
> functionThatCallsAClosure(someTest()) { x = $0 ? 1 : 2 }
Why is this better than
let x = functionThatCallsAClosure(someTest()) { $0 ? 1 : 2 }
?
IMO separating initialization from declaration is *very* rarely needed
and very much better avoided altogether, because it leads to code that's
less clear. Just because we *can* do this doesn't mean we should.
> On Sat, May 7, 2016 at 6:24 AM, Dave Abrahams via swift-evolution
> <swift-evolution at swift.org> wrote:
>
> on Tue May 03 2016, Chris Lattner
> <swift-evolution at swift.org> wrote:
>
> > Hello Swift community,
> >
> > The review of "SE-0073: Marking closures as executing exactly once"
> > begins now and runs through May 9. The proposal is available here:
> >
> >
> https://github.com/apple/swift-evolution/blob/master/proposals/0073-noescape-once.md
>
> >
> > Reviews are an important part of the Swift evolution process. All reviews
> should be sent to the swift-evolution mailing list at
> >
> > https://lists.swift.org/mailman/listinfo/swift-evolution
> >
> > or, if you would like to keep your feedback private, directly to the
> review manager.
> >
> > What goes into a review?
> >
> > The goal of the review process is to improve the proposal under review
> > through constructive criticism and contribute to the direction of
> > Swift. When writing your review, here are some questions you might
> > want to answer in your review:
> >
> > * What is your evaluation of the proposal?
>
> I think it's of questionable importance and doesn't generalize well.
> For example, you can't use this to construct something like
>
> var x: Int
> functionThatActsLikeIf( someTest(), then: { x = 1 }, else: { x = 2} )
>
> If you need to initialize something in an outer scope with something
> computed by a closure, it's much better to arrange something like this:
>
> var x = functionThatActsLikeIf( someTest(), then: { 1 }, else: { 2 } )
>
> --
> Dave
>
> _______________________________________________
> 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
--
Dave
More information about the swift-evolution
mailing list