<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hello. <div><br></div><div>In the recent years switch has been enhanced and there are some discussions about enhancing it even further with try - catch evaluation style inside the switch itself.</div><div><br></div><div>i was wondering if an additional enhancement could be to be able to use an empty parameter switch so we can use switch as a general-purpose replacement of if-else chains. Switch has many advantages over if-else chains, being these the most relevant.</div><div><br></div><div>- The code it's cleaner and more readable, even with nested switch expressions.</div><div>- Switch can be an expression, so it can return an assign a value to a variable.</div><div><br></div><div>nowadays we can use something like this.</div><div><br></div><div><div>var i = someIntMethodParameter; </div><div>var j = someStringMethodParameter</div><div>var res = switch (new Object()){</div><div>    case Object _ when i < 5 -> 5;</div><div>    case Object _ when i > 10 -> 10;</div><div>    case Object _ when j.length() < 10 -> 20;</div><div>    case null -> 0;</div><div>    default -> throw new IllegalStateException("Unexpected value: " + new Object());</div></div><div>};</div><div><br></div><div>as we can see here this is effectively a replacement for if-else chains that returns the first true case, but there are some problems with this syntax and semantics</div><div><br></div><div>. I was wondering if it could be a good idea to </div><div><br></div><div><pre style="max-width:100%;margin-bottom:1rem;border-radius:4px;padding:1rem 1.4rem;font-size:0.9em;overflow:auto;color:rgb(242,242,242)"><b>
};</b></pre></div></div></div></div></div></div>