> On Oct 20, 2019, at 11:11 PM, Kosit Supanyo <webdevxp....@gmail.com> wrote: > Ok, so let's look at a scenario. Will we be able to do this in the future, if > we decide to allow multiple expressions to result in a final value? > $y = switch ($x) { > case 1 => $arr = get_array(), array_pop($arr), > case -1 => $arr = get_array(), array_unshift($arr), > default => null, > }; > > As I told you in previous reply, I'm working on block-expressions as well. So > if PHP has block-expressions you can do the same this way: > > $y = switch ($x) { > case 1 => eval { > $arr = get_array(); > give array_pop($arr); > }, > case -1 => eval { > $arr = get_array(); > give array_shift($arr); > }, > default => null, > };
I know you said you were working on block expressions, but I did not view that as the best solution to the question I asked although I see that is how you envision it. > Which is obviously cleaner and more powerful. That is arguable. I find the solution you proposed above that uses `eval()` to be very "busy" visually, and needlessly complex/ You could instead simply assume that case statements supports multiple lines with the last providing the value, and thus not requiring the use of an explicit `eval()`. But to do that would require semi-colon line terminators, I think. Note I also think `eval()` would also be a nice to have, but what would be even nicer is if the inline switch did not require use of `eval()` to support multiple lines per case. #fwiw -Mike