Add switch expression syntax
But implementing it as function not the best solution. As it will require to evaluate all conditions and cases before choosing a correct one.
We need to create a proper switch syntax in Expr.
Originally posted by @antonmedv in https://github.com/expr-lang/expr/issues/579#issuecomment-1970720918
I have nothing against having a switch statement, but ClickHouse also has multiIf function with short-circuit-function-evaluation. It is often more readable than a switch and addresses your concerns about "evaluate all conditions and cases before choosing a correct one".
While switch statement is easy to understand and implement, maybe we need to consider adding "match" expression instead.
Or to make expr closer to golang and implement switch in the exact same semantics.
Or to make expr closer to golang and implement switch in the exact same semantics.
I very much would like to see multi-line expressions happen, so it would make sense to have switches to be an expression as well, e.g. in Ruby:
case x
when 1..5
"It's between 1 and 5"
when 6
"It's 6"
when "foo", "bar"
"It's either foo or bar"
else
"You gave me #{x} -- I have no idea what to do with that."
end
The key point is that it evaluates to an expression. The syntax does not matter.
I see. This makes sense. 👍🏻