<div dir="ltr">Should we add this to the list of things requested that will be rejected ?</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 6, 2016 at 10:58 AM, Greg Parker <span dir="ltr">&lt;<a href="mailto:gparker@apple.com" target="_blank">gparker@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
&gt; On Jan 6, 2016, at 2:09 AM, James Campbell via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;<br>
&gt; What is &quot;guard&quot;? why its the opposite to &quot;if&quot;!<br>
&gt;<br>
&gt; So in other languages what have they called this, well in Ruby they called it &quot;unless&quot; which I feel is a much clearer form of intent and lower barrier of entry for a user. See this code.<br>
&gt;<br>
&gt; guard name != nil else {<br>
&gt;    fatalError(&quot;Please enter a name&quot;)<br>
&gt; }<br>
&gt;<br>
&gt; What does that actually say if you look at it from a linguistic point of view, &quot;guard that name doesn&#39;t equal nil otherwise fail&quot;, that feels very obtuse.<br>
&gt;<br>
&gt; With my proposal the syntax could become this:<br>
&gt;<br>
&gt; unless name != nil {<br>
&gt;   fatalError(&quot;Please enter a name&quot;)<br>
&gt; }<br>
&gt;<br>
&gt; This now reads as &quot;unless name doesn&#39;t equal nil then fail&quot; which I think is a much clearer syntax. I think this would be a great change for Swift 3. For me I think this is more friendly for beginners.<br>
&gt;<br>
&gt; It would support the same structure as an if block:<br>
&gt;<br>
&gt; unless name != nil {<br>
&gt; }<br>
&gt; else<br>
&gt; {<br>
&gt; }<br>
&gt;<br>
&gt; Going forward it would allow us to be more flexible if we added inline if/unless statement, as in Ruby.<br>
&gt;<br>
&gt; callThisMethod() if age &gt; 0<br>
&gt; throwThisError() unless age &lt;= 0<br>
<br>
</span>`guard` is not the opposite of `if`. `guard` has effects that `if` does not. We deliberately chose not to provide syntax that was identical to `if not X`.<br>
<br>
History: The very first proposal of this feature was called `unless`. Fifty-odd messages of discussion later it was called `require`, in part because we did not want to match the `if not` constructs seen in languages like Perl and Ruby. That name was still controversial. A few weeks later it was changed to `guard..else` to general acclaim because the intended use is commonly known as a &quot;guard clause&quot;.<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
--<br>
Greg Parker     <a href="mailto:gparker@apple.com">gparker@apple.com</a>     Runtime Wrangler<br>
<br>
<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div><span style="font-size:16px;line-height:19.2px"></span><span style="font-size:12.8px"> Wizard</span><br></div><div><a href="mailto:james@supmenow.com" target="_blank">james@supmenow.com</a></div><div>+44 7523 279 698</div></div></div></div></div></div>
</div>