<div dir="ltr">If the goal is to avoid leaking variables into the outer scope, you might be happy with something like<div><br></div><div>repeat var x = 0 {</div><div>    // ...</div><div>    [update x]</div><div>} while [condition that has access to x]</div><div><br></div><div>// x is out of scope here</div><div class="gmail_extra"><br clear="all"><div><div><div dir="ltr"><div>Jacob<br></div></div></div></div>
<br><div class="gmail_quote">On Tue, Dec 8, 2015 at 1:54 PM, Jason Pollack 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 dir="ltr">I&#39;d like to propose a small enhancement to the repeat loop.<div><br></div><div>Currently if we want to perform &#39;count&#39; iterations in a loop, we need to do something like:</div><div><br></div><div>for _ in 0 ..&lt; count {</div><div>   //Do something here</div><div>}</div><div><br></div><div>It looks and feels a little awkward. We need to create an unnamed variable, and it&#39;s easy to forget (especially for language newcomers) that the loop starts with 0 and doesn&#39;t include count.</div><div><br></div><div>We can also do:</div><div><br></div><div>var i = 0</div><div>repeat {</div><div>    //Some code</div><div>    i += 1</div><div>} while i &lt; 10</div><div><br></div><div>This is worse, in that it introduces a variable in the outer scope, and puts the repeat count at the end. Plus, if the expression inside the repeat is complex, the value of i may never be incremented, or may be incremented more than once.</div><div><br></div><div><br></div><div>I propose the following:</div><div><br></div><div>repeat count {</div><div>    //Do something here</div><div>}</div><div><br></div><div>It&#39;s cleaner, and IMO clearer what this code is intended to do.</div><div><br></div><div>Naturally &#39;count&#39; should be non-negative. A while clause is not needed, although I could imagine it being supplied, to create a construct such as:</div><div><br></div><div>var ok = true</div><div>repeat numberOfTimes {</div><div>    //Do something, possibly set ok to false</div><div>} while ok</div><div><br></div><div>This would repeat the loop a maximum of  &#39;numberOfTimes&#39;, but could be ended early if some signal &#39;ok&#39; is set to false (or, of course, by a break statement).</div><div><br></div><div>Thoughts?</div><div><br></div><div>Thanks!</div><div>-Jason-</div></div>
<img src="https://u2002410.ct.sendgrid.net/wf/open?upn=P-2BsYbBZHRBuLDBJaL4DIKDNfkkjpROowTyRAObV11qw3AWpi1SDy9prQmmkbSkUkpUtqTagrtoefcwvHKw-2BwFD67aVEn-2FLhs9-2FcgSOTD0dWBYm6RSdIp-2BJO9gh3DsuzH1gnFsCFGVi5FG2ATka68LC5HmQpwNGhdMMtaomBrEL0Z8HgRzrio7qswo-2BfYHDGvb05kWbmyEzFfJKaK5FB-2FjKMp-2BKzs2Zr0wQcjAq1v4BY-3D" alt="" width="1" height="1" border="0" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important">
<br>_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">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>
<br></blockquote></div><br></div></div>