<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=""><div class="">The difference between the if-let syntax and the below syntax is that the type of foo never changes with the if-let syntax. Instead a new variable is created which shadows the original foo. The distinction is important because types don’t implicitly change in Swift. The implicit change is called "type narrowing”, that this has been discussed previously here: <a href="https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160104/005475.html" class="">https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160104/005475.html</a></div><div class=""><br class=""></div><div class="">I can definitely see the argument for no implicit type changes, but I can also see the argument that the syntax is much nicer.</div><div class=""><br class=""></div><div class="">Tyler</div><div class=""><br class=""></div><br class=""><div><blockquote type="cite" class=""><div class="">On Apr 30, 2016, at 10:11 PM, David Sweeris 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=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Apr 29, 2016, at 1:23 PM, Haravikk 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=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">This is definitely something I’m hoping to see as well, alongside more intelligent handling of the is keyword, as currently Swift doesn’t handle the following either:</div><div class=""><br class=""></div><div class=""><font face="Monaco" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>if foo is SomeType { /* foo could be safely used as SomeType here, but currently is not */ }</font></div><div class=""><br class=""></div><div class="">Hopefully someone more familiar can weigh in, as it seems like something I expect to be on the way but perhaps has been delayed in case any further changes to the type system were required?</div></div></div></blockquote></div><br class=""><div class="">This can be handled with the if-let syntax:</div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class="">if let foo = foo as? SomeType { … }</div></blockquote>although I think your idea is more readable.<div class=""><br class=""></div><div class="">- Dave Sweeris</div></div>_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></div></blockquote></div><br class=""></body></html>