Note: information on this page refers to Ceylon 1.2, not to the current release.

switch expression

A switch expression allows the expression to take any of a number of results depending which case matches a value. It is the expression analog of a statement-level switch control structure.

Usage

String formatted = switch (val) 
                    case (true) "yes" 
                    case (false) "no" 
                    case (is Float) formatFloat(val) 
                    else val.string;

Description

When writing an expression it is often inconvenient to have to "hoist" some simple conditional logic into a number of statements using an switch control structure. Compare the example in the Usage above with the equivalent using a statement level switch:

String formatted;
switch(val)
case (true) {
    formatted = "yes";
}
case (false) {
    formatted = "no";
}
case (is Float) {
    formatted = formatFloat(val);
}
else {
    formatted = val.string;
}

switch expressions support type narrowing etc, just like the switch statement. Likewise the else is required precisely when the cases are not exhaustive.

Type

The type of a switch expression is the union type of the case expressions and the else expression, if any.

See also