The Switch StatementsΒΆ
Not all real-world code is most conveniently expressed using @match. To help with some common pain-points, we have included @when, and @switch.
The following example demonstrates a common pattern that is unnecessarily verbose:
var = 1
@match x begin
(var_, _) => begin
var = var_
# do stuffs
end
Firstly, capturing in @match just shadows outer variables, but sometimes you just want to change them.
Secondly, @match is an expression, and the right side of => can only be an expression. Therefore writing begin or end statements can bring about an undesirable code format.
To address these issues, we present the @switch macro:
julia> var = 1
1
julia> x = (33, 44)
(33, 44)
julia> @switch x begin
@case (var, _)
println(var)
end
33
julia> var
33
julia> @switch 1 begin
@case (var, _)
println(var)
end
ERROR: matching non-exhaustive, at #= REPL[25]:1 =#