<div dir="ltr"><div class="gmail_default" style="font-family:comic sans ms,sans-serif;color:#274e13">+1</div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><br><div>All the best,</div><div><br></div><div>Nicholas</div><div><br></div><div>Linked in:</div><div><font size="2"><a href="http://lnkd.in/328U22" target="_blank">http://lnkd.in/328U22</a></font><br></div><div><br></div></div></div></div>
<br><div class="gmail_quote">On Mon, May 16, 2016 at 7:27 AM, Dave Abrahams via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5"><br>
on Fri May 13 2016, Joe Groff &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br>
<br>
&gt;&gt; On May 13, 2016, at 9:13 AM, Rob Napier via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Currently if a closure takes a value, it requires &quot;_ in&quot; to note<br>
&gt;&gt; that the value is ignored. This makes sense in many cases, but<br>
&gt;&gt; creates a bit of a mess in the case of an empty, void-returning<br>
&gt;<br>
&gt;&gt; closure:<br>
&gt;&gt;<br>
&gt;&gt; doThing(withCompletion: { _ in })<br>
&gt;&gt;<br>
&gt;&gt; I&#39;d like to suggest that the compiler promote the empty closure<br>
&gt;&gt; literal {} to any void-returning closure type so that this could be<br>
&gt;&gt; written:<br>
&gt;&gt;<br>
&gt;&gt; doThing(withCompletion: {})<br>
&gt;&gt;<br>
&gt;&gt; This encourages the use of empty closures over optional closures,<br>
&gt;&gt; which I think is open for debate. In general I try to avoid<br>
&gt;&gt; optionals when they can be precisely replaced with a non-optional<br>
&gt;&gt; value. Furthermore, most Cocoa completion handlers are not optional.<br>
&gt;&gt;<br>
&gt;&gt; The alternative is to not do this, but encourage that any closure<br>
&gt;&gt; that could reasonably be empty should in fact be optional. I would<br>
&gt;&gt; then want Cocoa functions with void-returning closures to be<br>
&gt;&gt; imported as optionals to avoid &quot;{ _ in }&quot;.<br>
&gt;<br>
&gt; +1. In general, I think we should allow implicit arguments, without<br>
&gt; requiring the closure to use all the implicit $n variables like we do<br>
&gt; today. These should all be valid:<br>
&gt;<br>
&gt; let _: () -&gt; () = {}<br>
&gt; let _: (Int) -&gt; () = {}<br>
&gt; let _: (Int, Int) -&gt; Int = { 5 }<br>
&gt; let _: (Int, Int) -&gt; Int = { $0 }<br>
&gt; let _: (Int, Int) -&gt; Int = { $1 }<br>
<br>
</div></div>+1<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
-Dave<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</div></div></blockquote></div><br></div>