<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=""><blockquote type="cite" class=""><div class="">On Jan 5, 2016, at 12:23 PM, Thorsten Seitz &lt;<a href="mailto:tseitz42@icloud.com" class="">tseitz42@icloud.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""></div><div class="">While it is real nice what can be done with a library solution, the switch-expression allows more than just comparing with a value. Library solutions won't be able to achieve the following features:</div><div class=""><br class=""></div><div class="">- pattern matching</div><div class="">- where clauses</div><div class="">- exhaustiveness check</div></div></blockquote></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">I agree that all of those are also important. Below would allow for pretending to be a ternary operator with the switch style. The ternary switch proposal would basically be a reduction in syntax… removing “return”, “switch $0”, and some brackets. It could potentially open it up to some other possibilities as well. Just trying to come up with all options that are possible currently. Not against the proposal… just playing devil’s advocate.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">func</span> ??? &lt;T:<span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">Comparable</span>&gt;(lhs: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">T</span>, rhs: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">T</span> -&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">AnyObject</span>?) -&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">AnyObject</span>? { <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">return</span> rhs(lhs) }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">let</span> color = <span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">10</span> <span style="font-variant-ligatures: no-common-ligatures; color: #31595d" class="">???</span> {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">switch</span> $0 {</div><p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">case</span> <span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">0</span>..&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">10</span>: <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">return</span> <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">UIColor</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #3d1d81" class="">clearColor</span>()</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">case</span> <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">let</span> x <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">where</span> x &lt; <span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">20</span>: <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">return</span> <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">UIColor</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #3d1d81" class="">yellowColor</span>()</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">case</span> <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">let</span> x <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">where</span> x &lt; <span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">30</span>: <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">return</span> <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">UIColor</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #3d1d81" class="">orangeColor</span>()</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">case</span> <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">let</span> x <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">where</span> x &lt; <span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">40</span>: <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">return</span> <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">UIColor</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #3d1d81" class="">redColor</span>()</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(187, 44, 162);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">&nbsp; &nbsp; </span>default<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">: </span>return<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""> </span><span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">UIColor</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">.</span><span style="font-variant-ligatures: no-common-ligatures; color: #3d1d81" class="">whiteColor</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">()</span></div><p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; }</div><p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">}</div></div><div class=""><br class=""></div><br class=""><div apple-content-edited="true" class="">
 Nerd . Designer . Developer<br class="">Jo Albright<br class=""><br class=""><br class="">
</div>
<br class=""><div><blockquote type="cite" class=""><div class=""><br class=""></div><div class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">-Thorsten&nbsp;</div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class="">Am 05.01.2016 um 18:10 schrieb Jo Albright via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt;:<br class=""><br class=""></div><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class="">I am really enjoying this conversation. I think the ternary switch is useful for advanced one line case values. I have been playing to see what can currently be done. Attached is a playground for those who want to see results… the range case takes a second to run. I know there can be optimizations done, but just wanted to add my thoughts to the conversation.&nbsp;<div class=""><br class=""></div><div class="">Chose ??? to denote a ternary switch, to be inline with ? = ternary, ?? = nil coalescing … the other two operators where just placeholders. I don’t believe || is a great solution as it is a comparison operator and —&gt; is confusing and resembles return… but again, nothing serious... just playing with playground (indulging my current obsession with custom operators).</div><div class=""><br class=""></div><div class="">With the below, I<span class="Apple-converted-space">&nbsp;</span><b class="">don’t</b><span class="Apple-converted-space">&nbsp;</span>feel there is a huge need to change the language… unless incorporating the actual switch optimization is worth it.</div><div class=""><br class=""></div><div class=""><div class="">Thanks,</div><div class="">Jo Albright<br class=""><div class=""><br class=""></div><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);">// ??? loops array and returns first element where lhs == element.0</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(187, 44, 162);">infix<span class="" style=""><span class="Apple-converted-space">&nbsp;</span></span>operator<span class="" style=""><span class="Apple-converted-space">&nbsp;</span>??? {<span class="Apple-converted-space">&nbsp;</span></span>associativity<span class="" style=""><span class="Apple-converted-space">&nbsp;</span>left<span class="Apple-converted-space">&nbsp;</span></span>precedence<span class="" style=""><span class="Apple-converted-space">&nbsp;</span></span><span class="" style="color: rgb(39, 42, 216);">200</span><span class="" style=""><span class="Apple-converted-space">&nbsp;</span>}</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);">// || merges values into an array</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(187, 44, 162);">infix<span class="" style=""><span class="Apple-converted-space">&nbsp;</span></span>operator<span class="" style=""><span class="Apple-converted-space">&nbsp;</span>|| {<span class="Apple-converted-space">&nbsp;</span></span>associativity<span class="" style=""><span class="Apple-converted-space">&nbsp;</span>left<span class="Apple-converted-space">&nbsp;</span></span>precedence<span class="" style=""><span class="Apple-converted-space">&nbsp;</span></span><span class="" style="color: rgb(39, 42, 216);">210</span><span class="" style=""><span class="Apple-converted-space">&nbsp;</span>}</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);">// --&gt; convert lhs &amp; rhs to tuple (lhs,rhs)</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(187, 44, 162);">infix<span class="" style=""><span class="Apple-converted-space">&nbsp;</span></span>operator<span class="" style=""><span class="Apple-converted-space">&nbsp;</span>--&gt; {<span class="Apple-converted-space">&nbsp;</span></span>associativity<span class="" style=""><span class="Apple-converted-space">&nbsp;</span>left<span class="Apple-converted-space">&nbsp;</span></span>precedence<span class="" style=""><span class="Apple-converted-space">&nbsp;</span></span><span class="" style="color: rgb(39, 42, 216);">220</span><span class="" style=""><span class="Apple-converted-space">&nbsp;</span>}</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>??? &lt;T:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">Equatable</span>&gt;(lhs:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">T</span>?, rhs: [(<span class="" style="color: rgb(112, 61, 170);">T</span>,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>)]) -&gt;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">AnyObject</span>? {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">for</span><span class="Apple-converted-space">&nbsp;</span>r<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">in</span><span class="Apple-converted-space">&nbsp;</span>rhs {<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">if</span><span class="Apple-converted-space">&nbsp;</span>lhs == r.<span class="" style="color: rgb(39, 42, 216);">0</span><span class="Apple-converted-space">&nbsp;</span>{<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">return</span><span class="Apple-converted-space">&nbsp;</span>r.<span class="" style="color: rgb(39, 42, 216);">1</span><span class="Apple-converted-space">&nbsp;</span>} };<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">return</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">nil</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">}</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>??? &lt;T:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">Equatable</span>&gt;(lhs:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">T</span>, rhs: [(<span class="" style="color: rgb(112, 61, 170);">T</span>,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>)]) -&gt;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">AnyObject</span>? {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">for</span><span class="Apple-converted-space">&nbsp;</span>r<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">in</span><span class="Apple-converted-space">&nbsp;</span>rhs {<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">if</span><span class="Apple-converted-space">&nbsp;</span>lhs<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(61, 29, 129);">==</span><span class="Apple-converted-space">&nbsp;</span>r.<span class="" style="color: rgb(39, 42, 216);">0</span><span class="Apple-converted-space">&nbsp;</span>{<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">return</span><span class="Apple-converted-space">&nbsp;</span>r.<span class="" style="color: rgb(39, 42, 216);">1</span><span class="Apple-converted-space">&nbsp;</span>} };<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">return</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">nil</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">}</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>|| &lt;T&gt;(lhs: (<span class="" style="color: rgb(112, 61, 170);">T</span>,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>), rhs: (<span class="" style="color: rgb(112, 61, 170);">T</span>,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>)) -&gt; [(<span class="" style="color: rgb(112, 61, 170);">T</span>,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>)] {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">return</span><span class="Apple-converted-space">&nbsp;</span>[lhs,rhs]</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">}</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>|| &lt;T&gt;(lhs: [(<span class="" style="color: rgb(112, 61, 170);">T</span>,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>)], rhs: (<span class="" style="color: rgb(112, 61, 170);">T</span>,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>)) -&gt; [(<span class="" style="color: rgb(112, 61, 170);">T</span>,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>)] {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">return</span><span class="Apple-converted-space">&nbsp;</span>lhs + [rhs]</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">}</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>|| &lt;T&gt;(lhs: (<span class="" style="color: rgb(112, 61, 170);">Range</span>&lt;<span class="" style="color: rgb(112, 61, 170);">T</span>&gt;,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>), rhs: (<span class="" style="color: rgb(112, 61, 170);">Range</span>&lt;<span class="" style="color: rgb(112, 61, 170);">T</span>&gt;,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>)) -&gt; [(<span class="" style="color: rgb(112, 61, 170);">T</span>,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>)] {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">return</span><span class="Apple-converted-space">&nbsp;</span>lhs.<span class="" style="color: rgb(39, 42, 216);">0</span>.<span class="" style="color: rgb(61, 29, 129);">map</span><span class="Apple-converted-space">&nbsp;</span>{ ($0,lhs.<span class="" style="color: rgb(39, 42, 216);">1</span>) } + rhs.<span class="" style="color: rgb(39, 42, 216);">0</span>.<span class="" style="color: rgb(61, 29, 129);">map</span><span class="Apple-converted-space">&nbsp;</span>{ ($0,rhs.<span class="" style="color: rgb(39, 42, 216);">1</span>) }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">}</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>|| &lt;T&gt;(lhs: (<span class="" style="color: rgb(112, 61, 170);">Range</span>&lt;<span class="" style="color: rgb(112, 61, 170);">T</span>&gt;,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>), rhs: (<span class="" style="color: rgb(112, 61, 170);">T</span>,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>)) -&gt; [(<span class="" style="color: rgb(112, 61, 170);">T</span>,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>)] {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">return</span><span class="Apple-converted-space">&nbsp;</span>lhs.<span class="" style="color: rgb(39, 42, 216);">0</span>.<span class="" style="color: rgb(61, 29, 129);">map</span><span class="Apple-converted-space">&nbsp;</span>{ ($0,lhs.<span class="" style="color: rgb(39, 42, 216);">1</span>) } + [rhs]</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">}</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>|| &lt;T&gt;(lhs: [(<span class="" style="color: rgb(112, 61, 170);">T</span>,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>)], rhs: (<span class="" style="color: rgb(112, 61, 170);">Range</span>&lt;<span class="" style="color: rgb(112, 61, 170);">T</span>&gt;,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>)) -&gt; [(<span class="" style="color: rgb(112, 61, 170);">T</span>,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>)] {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">return</span><span class="Apple-converted-space">&nbsp;</span>lhs + rhs.<span class="" style="color: rgb(39, 42, 216);">0</span>.<span class="" style="color: rgb(61, 29, 129);">map</span><span class="Apple-converted-space">&nbsp;</span>{ ($0,rhs.<span class="" style="color: rgb(39, 42, 216);">1</span>) }</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">}</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>--&gt; &lt;T&gt;(lhs:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">T</span>, rhs:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">AnyObject</span>) -&gt; (<span class="" style="color: rgb(112, 61, 170);">T</span>,<span class="" style="color: rgb(112, 61, 170);">AnyObject</span>) {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">return</span><span class="Apple-converted-space">&nbsp;</span>(lhs,rhs)</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">}</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">enum</span><span class="Apple-converted-space">&nbsp;</span>LifeStatus {<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">case</span><span class="Apple-converted-space">&nbsp;</span>Alive, Dead, Zombie }</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">let</span><span class="Apple-converted-space">&nbsp;</span>life:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">LifeStatus</span>? = .<span class="" style="color: rgb(49, 89, 93);">Dead</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);">// embedded ternary operators … how I have built a ternary switch in past</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">let</span><span class="Apple-converted-space">&nbsp;</span>color1 =<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">life</span><span class="Apple-converted-space">&nbsp;</span>== .<span class="" style="color: rgb(49, 89, 93);">Alive</span><span class="Apple-converted-space">&nbsp;</span>?<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">UIColor</span>.<span class="" style="color: rgb(61, 29, 129);">greenColor</span>() :<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">life</span><span class="Apple-converted-space">&nbsp;</span>== .<span class="" style="color: rgb(49, 89, 93);">Dead</span><span class="Apple-converted-space">&nbsp;</span>?<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">UIColor</span>.<span class="" style="color: rgb(61, 29, 129);">redColor</span>() :<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">life</span><span class="Apple-converted-space">&nbsp;</span>== .<span class="" style="color: rgb(49, 89, 93);">Zombie</span><span class="Apple-converted-space">&nbsp;</span>?<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">UIColor</span>.<span class="" style="color: rgb(61, 29, 129);">grayColor</span>() :<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">UIColor</span>.<span class="" style="color: rgb(61, 29, 129);">whiteColor</span>()</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);">// using custom operators</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">let</span><span class="Apple-converted-space">&nbsp;</span>color2 =<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">life</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(49, 89, 93);">???</span><span class="Apple-converted-space">&nbsp;</span>.<span class="" style="color: rgb(49, 89, 93);">Alive</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(49, 89, 93);">--&gt;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">UIColor</span>.<span class="" style="color: rgb(61, 29, 129);">greenColor</span>()<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(49, 89, 93);">||</span><span class="Apple-converted-space">&nbsp;</span>.<span class="" style="color: rgb(49, 89, 93);">Dead</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(49, 89, 93);">--&gt;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">UIColor</span>.<span class="" style="color: rgb(61, 29, 129);">redColor</span>()<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(49, 89, 93);">||</span><span class="Apple-converted-space">&nbsp;</span>.<span class="" style="color: rgb(49, 89, 93);">Zombie</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(49, 89, 93);">--&gt;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">UIColor</span>.<span class="" style="color: rgb(61, 29, 129);">grayColor</span>() ??<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">UIColor</span>.<span class="" style="color: rgb(61, 29, 129);">whiteColor</span>()</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">let</span><span class="Apple-converted-space">&nbsp;</span>age =<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(39, 42, 216);">15</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);">// works with ranges</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">let</span><span class="Apple-converted-space">&nbsp;</span>ageGroup =<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">age</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(49, 89, 93);">???</span><span class="Apple-converted-space">&nbsp;</span>(<span class="" style="color: rgb(39, 42, 216);">0</span>...<span class="" style="color: rgb(39, 42, 216);">1</span>)<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(49, 89, 93);">--&gt;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(209, 47, 27);">"baby"</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(49, 89, 93);">||</span><span class="Apple-converted-space">&nbsp;</span>(<span class="" style="color: rgb(39, 42, 216);">2</span>...<span class="" style="color: rgb(39, 42, 216);">4</span>)<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(49, 89, 93);">--&gt;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(209, 47, 27);">"toddler"</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(49, 89, 93);">||</span><span class="Apple-converted-space">&nbsp;</span>(<span class="" style="color: rgb(39, 42, 216);">5</span>...<span class="" style="color: rgb(39, 42, 216);">12</span>)<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(49, 89, 93);">--&gt;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(209, 47, 27);">"kid"</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(49, 89, 93);">||</span><span class="Apple-converted-space">&nbsp;</span>(<span class="" style="color: rgb(39, 42, 216);">13</span>...<span class="" style="color: rgb(39, 42, 216);">19</span>)<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(49, 89, 93);">--&gt;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(209, 47, 27);">"teen"</span><span class="Apple-converted-space">&nbsp;</span>??<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(209, 47, 27);">"adult"</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 132, 0);"><span class="" style="color: rgb(79, 129, 135);">ageGroup</span>&nbsp;//<font color="#008400" face="Menlo" class="">&nbsp;“teen”</font></div></div><div class=""><br class=""></div><div class=""><br class=""><div class=""></div></div></div></div></div></blockquote><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class="">&lt;TernarySwitch.playground.zip&gt;</div></blockquote><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class=""><div class=""><div class=""><div class=""><div class=""></div></div></div></div></div></blockquote><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class=""><span class="">_______________________________________________</span><br class=""><span class="">swift-evolution mailing list</span><br class=""><span class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a></span><br class=""><span class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span></div></blockquote></div></blockquote></div><br class=""></body></html>