[swift-evolution] Code blocks and trailing closures
Rien
Rien at Balancingrock.nl
Wed Mar 15 07:47:26 CDT 2017
> On 15 Mar 2017, at 13:33, Nick Keets <nick.keets at gmail.com> wrote:
>
> 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).
>
Agreed.
Rien.
> 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
>
More information about the swift-evolution
mailing list