<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">Not 100% a fan of this idea.&nbsp;</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">There’s a parallel thread going on right now about adding unless/until into the stdlib. I think that’s what you may want.</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">As for mixing guard and where, you can do that already.</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">Here’s a contrived example:</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(164, 176, 177);"><span style="font-variant-ligatures: no-common-ligatures; color: #de5194">import</span> UIKit</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(164, 176, 177); min-height: 13px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(127, 135, 207);"><span style="font-variant-ligatures: no-common-ligatures; color: #de5194">var</span><span style="font-variant-ligatures: no-common-ligatures; color: #a4b0b1"> a: </span>UIView<span style="font-variant-ligatures: no-common-ligatures; color: #a4b0b1">?</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(127, 135, 207);"><span style="font-variant-ligatures: no-common-ligatures; color: #de5194">var</span><span style="font-variant-ligatures: no-common-ligatures; color: #a4b0b1"> b: </span>UIView<span style="font-variant-ligatures: no-common-ligatures; color: #a4b0b1">?</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(164, 176, 177); min-height: 13px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(164, 176, 177);"><span style="font-variant-ligatures: no-common-ligatures; color: #de5194">func</span> contrivedExampleFunc() {</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(164, 176, 177); min-height: 13px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(164, 176, 177);">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #de5194">guard</span> <span style="font-variant-ligatures: no-common-ligatures; color: #de5194">let</span> a = <span style="font-variant-ligatures: no-common-ligatures; color: #2fafa9">a</span> <span style="font-variant-ligatures: no-common-ligatures; color: #de5194">as</span>? <span style="font-variant-ligatures: no-common-ligatures; color: #7f87cf">UILabel</span> <span style="font-variant-ligatures: no-common-ligatures; color: #de5194">where</span> a.<span style="font-variant-ligatures: no-common-ligatures; color: #2fafa9">backgroundColor</span> == .<span style="font-variant-ligatures: no-common-ligatures; color: #2c9edb">blackColor</span>(),</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(164, 176, 177);">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #de5194">let</span> b = <span style="font-variant-ligatures: no-common-ligatures; color: #2fafa9">b</span> <span style="font-variant-ligatures: no-common-ligatures; color: #de5194">as</span>? <span style="font-variant-ligatures: no-common-ligatures; color: #7f87cf">UIButton</span> <span style="font-variant-ligatures: no-common-ligatures; color: #de5194">where</span> b.<span style="font-variant-ligatures: no-common-ligatures; color: #2fafa9">backgroundColor</span> == .<span style="font-variant-ligatures: no-common-ligatures; color: #2c9edb">whiteColor</span>() <span style="font-variant-ligatures: no-common-ligatures; color: #de5194">else</span> {</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(164, 176, 177);">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #de5194">return</span></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(164, 176, 177);">&nbsp; &nbsp; }</p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(164, 176, 177); min-height: 13px;"><br></p>
<p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(164, 176, 177);">}</p></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div> <br> <div id="bloop_sign_1449942887085441024" class="bloop_sign"><div style="font-family:helvetica,arial;font-size:13px"><div style="color: rgb(34, 34, 34); font-family: arial, sans-serif;">Best,</div><div style="color: rgb(34, 34, 34); font-family: arial, sans-serif;"><br></div><font color="#222222" face="arial, sans-serif" style="color: rgb(34, 34, 34); font-family: arial, sans-serif;">Arthur /&nbsp;<a href="http://sabintsev.com">Sabintsev.com</a></font></div></div> <br><p class="airmail_on">On December 12, 2015 at 12:43:20 PM, Jakob Egger via swift-evolution (<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>) wrote:</p> <blockquote type="cite" class="clean_bq"><span><div><div></div><div>At the moment "guard let" can only be used for unwrapping optionals. It<br>would be really nice if it could also be used with non-optional values.<br>For example, I'd like to write code like the following<br><br>guard <br>    let tableView = self.tableView,<br>    let col = tableView.columnWithIdentifier("MyColumn") where col != -1<br>else {<br>    NSBeep()<br>    print("an error occurred")<br>    return<br>}<br><br>This is not possible, because the second let assignment is non-optional,<br>so I have to write it like this:<br><br>guard let tableView = self.tableView else {<br>    NSBeep()<br>    print("an error occurred")<br>    return<br>}<br>let col = tableView.columnWithIdentifier("MyColumn")<br>guard col != -1 else {<br>    NSBeep()<br>    print("an error occurred")<br>    return<br>}<br><br>This leads to a lot of duplicated error handling code.<br><br>Ideally, I'd also like to mix let &amp; where clauses in a single guard<br>statement, like this:<br><br>guard <br>    let tableView = self.tableView,<br>    let col = tableView.columnWithIdentifier("MyColumn") where col !=<br>    -1,<br>    let headerCell = tableView.tableColumns[col].headerCell as?<br>    MyTableHeaderCell<br>else {<br>    NSBeep()<br>    print("an error occurred")<br>    return<br>}<br><br>What do you think? Right now I always end up writing a lot of separate<br>guard statement, and I have a lot of repeated error handling code.<br><br><br>Best regards,<br>Jakob<br>_______________________________________________<br>swift-evolution mailing list<br>swift-evolution@swift.org<br>https://lists.swift.org/mailman/listinfo/swift-evolution<br></div></div></span></blockquote></body></html>