<div dir="ltr">Generally, pattern binding in `if` looks like this:<div><br></div><div>if case *pattern* = *expression* { ... }</div><div><br></div><div>Pattern binding for optionals is currently usable as both of:</div><div><br></div><div>if case let .some(x) = y { ... }</div><div>if case let x? = y { ... }</div><div><br></div><div>Now, there is also an older optional-specific hack:</div><div><br></div><div>if let x = y { ... }</div><div><br></div><div>In terms of pattern binding, it should always be true, and it&#39;s illogical inside `if`.</div><div><br></div><div>I suggest:</div><div>1) Remove optional pattern binding</div><div>2) Remove `case` in `if` pattern binding</div><div><br></div><div>Really, `case` should be an attribute of `switch`, not `if`.</div><div><br></div><div>Pattern binding for optionals will look like:</div><div><br></div><div>if let x? = y { ... }</div><div><br></div><div>It will become more explicit and consistent with the rest of the language.</div><div><br></div><div>We need to hurry until Swift 3 lands!</div><div><br></div><div>- Anton</div></div>