<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 2 Jul 2016, at 14:19, Anton Zhilin via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Diego Barros via swift-evolution &lt;swift-evolution@...&gt; writes:<br class=""><br class=""><blockquote type="cite" class="">for 1...10 {<br class="">// do something 10 times<br class="">}<br class=""></blockquote><br class="">Firstly, this should be delayed to post-Swift 3.<br class="">Secondly, I tend to vote for generalization and simplification of Swift <br class="">syntax. For example, I voted to replace 'default' with 'case _'. In this <br class="">case, I also prefer more general syntax. -1 from me.</div></div></blockquote><br class=""></div><div>Does this idea apply in the same way? While "for _ in foo" and "for foo" would be equivalent, usually the underscore is used to indicate intent to avoid mistakes, which is why we wouldn't to be able to just use "case" on its own to represent match all, as it could be a case statement that the user didn't finish, the underscore in this case makes it clear that yes, what the user wants to do is ignore the element(s) themselves.</div><div><br class=""></div><div>However, unlike the switch case, for omitting the underscore to represent a mistake you'd have to:</div><div><ol class=""><li class="">Forget the underscore</li><li class="">Forget the "in" keyword</li><li class="">Use a variable that should have been shadowed but wasn't, resulting in a subtle error.</li></ol><div class="">I specify number 3 because if you use a variable that doesn't exist it will produce an obvious error. While the three are possible, they seem highly unlikely in combination.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">That said, there is an argument to be made that this change would be inconsistent with using a result:</div><div class=""><br class=""></div><div class=""><font face="Monaco" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>foo.someMethod()<span class="Apple-tab-span" style="white-space:pre">                </span>// warning, unused result</font></div><div class=""><font face="Monaco" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>let _ = foo.someMethod()<span class="Apple-tab-span" style="white-space:pre">        </span>// result explicitly ignored</font></div><div class=""><br class=""></div><div class="">I'd possibly argue that a sequence is implicitly meant to have its results used, so they should be explicitly ignored for consistency's sake.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">So… I like the short-form, but I like consistency, so I think I've manoeuvred myself into being a +0.1 or so ;)</div></div></body></html>