> On 20 Mar 2017, at 14:24, Rien via swift-evolution 
> <[email protected]> wrote:
> 
> Another solution to the original problem would be to allow the parameter name 
> of the closure outside the functions parenthesis:
> 
> func test(a: Int, onError: ()->Void) {…}
> 
> could be called like this:
> 
> test(5) onError: { myErrorHandler() }

When you get onto that kind of syntax the obvious question is, what's wrong 
with:

        test(5, onError: { myErrorHandler() })

To me there's no real difference, in fact all that's changed now is that a 
round bracket is at the end; while being within the parenthesis is a little 
noisier, it's also clearer what's going on. Consider, if the body of the 
closure were very long:

        test(5, onError: {
                // Lots
                // and
                // lots
                // of
                // code
        })

Here the closing round bracket reminds me that this is the end of a closure 
being passed to a function, rather than some other code block and, if properly 
indented, it should be easy to jump to whatever that function is.

It could just be my personal preference; I'm generally uncomfortable with the 
use of trailing closures except for language-like constructs such as .forEach, 
and I've never had any problem using closures within the function's 
parenthesis, but it just seems like there's a point at which we're bolting so 
much onto trailing closures, that you really do have to ask what's so wrong 
with just passing the closure normally?
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to