<div dir="ltr"><div>While I&#39;ve sometimes (early on) wished for a shorter-hand syntax for that construct, I&#39;ve never been able to think of something that I thought was better. I&#39;ve gotten to the point where I don&#39;t particularly mind it anymore.</div><div><br></div>Regarding the exclamation point specifically, seeing one of those in an expression context says to me &quot;this thing will die horribly if it is nil/throws an error&quot;. Using it in this context where that&#39;s not the case would probably go against users&#39; expectations.<div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, May 17, 2016 at 8:05 AM Vladimir.S via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 17.05.2016 16:51, Johan Jensen wrote:<br>
 &gt; This was one of the first and most commonly suggested ideas, when the Swift<br>
 &gt; Evolution mailing list first started.<br>
 &gt; Chris Lattner sums it up<br>
 &gt;<br>
&lt;<a href="https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151214/003546.html" rel="noreferrer" target="_blank">https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151214/003546.html</a>&gt;<br>
 &gt; in one of those threads:<br>
 &gt;<br>
 &gt;&gt; This is commonly requested - the problem is that while it does help<br>
 &gt; reduce boilerplate, it runs counter to the goal of improving clarity.<br>
 &gt;<br>
 &gt; — Johan<br>
<br>
Oh, thank you for letting this know.<br>
<br>
Well, I totally disagree with Chris. And as soon as there was no &#39;official&#39;<br>
proposal and &#39;official&#39; decision, I&#39;d like to discuss this more.<br>
<br>
I saw a lot of code like<br>
if let mySomeValue = mySomeValue {} in sources and even in books.<br>
Plus, I really believe that<br>
if let mySomeValue! {..} is better in any way: readability, less space for<br>
errors(when you need to repeat the same name) etc<br>
<br>
FWIW, I suggest more explicit variant:<br>
if let value! {...} // with exclamation mark<br>
In that &quot;old&quot; proposal there was `if let value {...}`, was not so clear.<br>
<br>
I can&#39;t accept an argument that you can use another name - as usually<br>
&#39;good&#39; name is already &#39;crafted&#39; for the instance and you want to use it in<br>
next code.<br>
Otherwise, we need a &#39;best practice&#39; to name optional variables with some<br>
prefix or suffix like : mySomeValueOpt, then `if let mySomeValue =<br>
mySomeValueOpt` will have a sense. But as I understand, we don&#39;t want to<br>
use such approach.<br>
Additionally, when you shadow optional value with same name - you are<br>
*protecting* yourself from using optional value inside block of unwrapped<br>
code. IMO it is a good idea.<br>
And want we or don&#39;t want, we already have this practice widely. So I<br>
believe this(my) proposal will improve the code.<br>
<br>
I&#39;d like to get opinion of the community regarding this feature.<br>
<br>
On 17.05.2016 16:51, Johan Jensen wrote:<br>
&gt; This was one of the first and most commonly suggested ideas, when the Swift<br>
&gt; Evolution mailing list first started.<br>
&gt; Chris Lattner sums it up<br>
&gt; &lt;<a href="https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151214/003546.html" rel="noreferrer" target="_blank">https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151214/003546.html</a>&gt;<br>
&gt; in one of those threads:<br>
&gt;<br>
&gt;&gt; This is commonly requested - the problem is that while it does help<br>
&gt; reduce boilerplate, it runs counter to the goal of improving clarity.<br>
&gt;<br>
&gt; — Johan<br>
&gt;<br>
&gt; On Tue, May 17, 2016 at 3:43 PM, Vladimir.S via swift-evolution<br>
&gt; &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a> &lt;mailto:<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;&gt; wrote:<br>
&gt;<br>
&gt;     It is common to shadow optional value name with unwrapped value with<br>
&gt;     same name:<br>
&gt;<br>
&gt;     if let someGoodValue = someGoodValue {...}<br>
&gt;<br>
&gt;     What if we&#39;ll have a syntax to not repeat the variable name to achieve<br>
&gt;     the same target:<br>
&gt;<br>
&gt;     if let someGoodValue! {...}<br>
&gt;<br>
&gt;     What do you think?<br>
&gt;     _______________________________________________<br>
&gt;     swift-evolution mailing list<br>
&gt;     <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a> &lt;mailto:<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;<br>
&gt;     <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
&gt;<br>
&gt;<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>
</blockquote></div>