Design Doc: Switch
Many programming languages provide
switch as a generalization of
if-elif-else. We want to add it to Fluid.
The following example shows the usage of
a = fluid.Var(10) b = fluid.Var(0) with switch() as switch: with switch.case(fluid.less_equal(a, 10)): fluid.print("Case 1") with switch.case(fluid.larger(a, 0)): fluid.print("Case 2") with switch.default(): fluid.print("Case 3")
switchcontrol-flow checks cases one-by-one.
- The condition of each case is a boolean value, which is a scalar, and differs from the
fluid.if_elsecontrol-flow, which condition could be a vector of boolean values.
- It runs the first matched case, or the default case if there is one.
- Once it matches a case, it runs the corresponding branch and only that branch. It's like there is a C's
breakkeyword at the end of each case.
The above program should print and print only "Case 1".
The implementation of the backward pass of the
switch control-flow is easier than the backward of the
switch runs at most one branch, whereas
if-else could run more than one branches.