[swift-evolution] Code blocks and trailing closures

Nick Keets nick.keets at gmail.com
Wed Mar 15 07:33:19 CDT 2017


I think the word you are looking for is “confusing”, not “ambiguous”.
Nothing is ambiguous
about the code you wrote, but you could make an argument that you find it
confusing (since this is something subjective).

On Wed, Mar 15, 2017 at 12:35 PM, Rien via swift-evolution <
swift-evolution at swift.org> wrote:

> What does the following code fragment do?
>
> serverCert.write(to: certificateUrl) { showErrorInKeyWindow(message);
> return }
>
> The only possible answer is: I don’t know.
>
> The problem is finding out what the “return” statement will do.
>
> Without knowing if the {...} is a code block or a trailing closure it is
> impossible to know what the return statement will do. It will either end
> the closure or it will end the function that contains this code block.
>
> This could be disambiguated by using the same syntax as for lazy variables:
>
> serverCert.write(to: serverCertificateUrl) { showErrorInKeyWindow(message:
> message); return }()
>
> Now it is clear that the return statement will only terminate the
> (trailing) closure.
>
> A question to the educators on the list: Is this a real problem?
>
> Personally, I dislike this situation, but I am also ambivalent towards the
> solution I just described.
>
> Regards,
> Rien
>
> Site: http://balancingrock.nl
> Blog: http://swiftrien.blogspot.com
> Github: http://github.com/Balancingrock
> Project: http://swiftfire.nl
>
>
>
>
>
> _______________________________________________
> 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/20170315/5dd17aaa/attachment.html>


More information about the swift-evolution mailing list