<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 20 April 2014 04:17, Bruce Leban <a href="http://bruce-at-leapyear.org" target="_blank">bruce-at-leapyear.org</a> |<a href="http://python-ideas-at-python.org" target="_blank">python-ideas-at-python.org</a>| <span dir="ltr"><<a href="mailto:vajg1g2cqt@sneakemail.com" target="_blank">vajg1g2cqt@sneakemail.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><br>I found that the ugliest part of your proposal since it hides the first case and at the same time makes it appear special when it isn't.</div>


</div></blockquote><div><br></div><div>Myabe yes, but if you "translate" it in an if-elif, also the if seems to be "special".<br></div><div> <br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">


<div dir="ltr"><div class="gmail_extra"></div><div class="gmail_extra">


The indentation isn't required with my little Case class. The following works just as well but lacks the visible scoping that the with statement provides (of course the scope of the case variable leaks in either version, but I could modify my class to fail if invoked after __exit__ or __del__)..</div>





<div class="gmail_extra"><br></div><div class="gmail_extra"><blockquote style="font-size:13px;margin:0px 0px 0px 40px;font-family:arial,sans-serif;padding:0px;border:medium none"><div><div><font face="courier new, monospace">for i in range(5):</font></div>





<div><font face="courier new, monospace">    print(i, end=' => ')</font></div></div><div><font face="courier new, monospace">    case = Case(i)</font></div><div><div><font face="courier new, monospace">    if case(1):</font></div>





<div><div><font face="courier new, monospace">        print('one')</font></div><div><span style="font-family:'courier new',monospace">    elif case((2,3)):</span></div></div></div></blockquote><div>
<blockquote style="font-size:13px;margin:0px 0px 0px 40px;font-family:arial,sans-serif;padding:0px;border:medium none">


<span style="font-family:'courier new',monospace">        print('tuple(two, three)')</span></blockquote><blockquote style="font-size:13px;margin:0px 0px 0px 40px;font-family:arial,sans-serif;padding:0px;border:medium none">





<div><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><div></div></blockquote><div><font face="courier new, monospace">    elif case(2, 3):</font></div></div><div><font face="courier new, monospace">        print('two or three')</font></div>





<div><font face="courier new, monospace">    elif case > 3:</font></div><div><font face="courier new, monospace">        print('more than three')</font></div></blockquote><blockquote style="font-size:13px;margin:0px 0px 0px 40px;font-family:arial,sans-serif;padding:0px;border:medium none">





<span style="font-family:'courier new',monospace">    else:</span><br></blockquote><blockquote style="font-size:13px;margin:0px 0px 0px 40px;font-family:arial,sans-serif;padding:0px;border:medium none"><font face="courier new, monospace">        print('unmatched')</font></blockquote>


</div></div></div></blockquote><div><br></div><div>Ok, but you have to nest it inside a for loop. Your class is a good solution, but a new syntax does not need nesting in a with or a for statement.<br></div><br></div><br>


</div></div>