<div dir="ltr"><div>A very common pattern in swift code is to &quot;guard let&quot; or &quot;if let&quot; optionals  - this works by creating a new non-optional variable to be used by future code. Often, the new variable is given the same name as the original optional variable, creating a shadow variable. This approach leads to odd looking code like this:</div><div><br></div><div>if let nearestX = nearestX { closest = nearestX }<br></div><div>guard let layer = layer else { continue } </div><div>// use layer</div><div><br></div><div>At a glance, and to Swift newcomers, this code looks completely non-sensical. It&#39;s also verbose for simply ensuring the variable is non-nil. </div><div><br></div><div>The solution:</div><div>Swift should generate unwrapped shadow variables after nil checking. The compiler would treat the below code as if it had created an unwrapped shadow variable.</div><div><br></div><div><span><div>if nearestX != nil { closest = nearestX } // notice that nearestX isn&#39;t force unwrapped<br></div><div>guard layer != nil else { continue } </div><div>// use layer, without force unwrapping</div></span></div><div><br></div><div>Why force unwrapping isn&#39;t a good alternative: </div><div>You might suggest force unwrapping variables when they&#39;re inside an if or after a guard that checks for nil. While this does allow for the &quot;layer = nil&quot; syntax, it results in code that is less resilient to change. Imagine that this code was written:</div><div><br></div><div>{code:java}</div><div>if layer != nil {</div><div>// lots of code before //</div><div>layer!.backgroundColor = newColor</div><div>// lots of code after //</div><div>}</div><div>{code}</div><div><br></div><div>And much later, you need to use some of the the code in the if body elsewhere, so you copy and paste a huge chunk of it. You likely won&#39;t notice the force unwrap, and unless you&#39;re lucky, you probably didn&#39;t paste it into an if that checked layer for nil. So you get a crash. Because of this, it&#39;s important we make safe optional unwrapping as easy and sensical as possible, and minimize the situations that you would need to force unwrap.</div></div>