<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Oct 3, 2016 at 9:31 PM, Nevin Brackett-Rozinsky via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">While we’re on the subject, has there been any discussion about adding a pattern matching operator with the polarity reversed?<div><br></div><div>To me at least it seems far more natural to write, eg., “case x =~ somePattern” and to read it as “x matches somePattern” rather than the status quo “somePattern matches x”.</div></div></blockquote><div><br></div><div>There has. My memory is foggy now, but I do believe this was one of those things about which the core team chimed in to say that they had once seriously considered or even implemented it and then backed it out.</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Nevin</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Mon, Oct 3, 2016 at 9:31 PM, Erica Sadun via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div style="word-wrap:break-word"><b>Resolved</b>: `if case 1...10 = myNumber { ... }` is an abomination.<div><br></div><div>It confuses inexperience developers. At least those few who are </div><div>aware of its existence. Using the assignment operator for pattern </div><div>matching adds insult to injury. </div><div><br></div><div>I far prefer</div><div>    `if case .failure(let error) ~= result { ... } `</div><div>to</div><div><div>    `if case .failure(let error) = result {...}`</div></div><div><br></div><div>Though worthy, this isn&#39;t a popular pattern.  A highly unscientific survey of </div><div>gist reveal:</div><div><br></div><div><div>* Gists using &quot;if case&quot;: 94</div><div>* Gists that could use &quot;if let&quot; instead of &quot;if case&quot;: Approximately 94-ish</div><div>* Gists using &quot;guard case&quot; (with significant overlap with &quot;if case&quot;): 54</div><div>* Gists that could use &quot;guard let&quot; or &quot;guard x != nil&quot; or &quot;guard x == .enumeration&quot; instead: About 54-ish</div><div>* Standard library: 1 use of &quot;guard case&quot;, 5 uses of &quot;if case&quot;.</div></div><div><br></div><div><b>Note</b>:</div><div><div><br></div><div>* I love `guard case`/`if case` for `Result` enumerations</div><div>* I  love`for case let x? in [optionals]`. </div><div><br></div></div><div><div>I don&#39;t expect changing `=` to `~=` would make a huge difference in adoption </div><div>but it would satisfy  my inner code critic. Changing it would be breaking</div><div>but as far as I can tell, it wouldn&#39;t really break *that* *much* *code*</div><span class="m_4869532411399131087HOEnZb"><font color="#888888"><div><br></div><div>-- E</div><div><br></div><div><br></div></font></span></div></div><br></div></div>______________________________<wbr>_________________<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/mailma<wbr>n/listinfo/swift-evolution</a><br>
<br></blockquote></div><br></div>
<br>______________________________<wbr>_________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-<wbr>evolution</a><br>
<br></blockquote></div><br></div></div>