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.


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


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;
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.


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

See also