Like its counter-part the
case Statement, the
case expression can return one (or none, i.e.
nil) of a set of possible expressions, depending on the provided input:
Case expressions make it possible to use case in an expression instead of a standalone statement. Instead of statements, case requires a (single) expression for each element and its
var i: Integer; var s := case i of 0: 'none'; 1: 'one'; 2: 'two'; 3..5 : 'a few'; else 'many'; end;
The result type of a
case expression is the closest common type that can be inferred from all individual statements. For numerical values, it will be the closest type that can hold any of the returned (e.g.
Double, if some cases return an Integer and others a Double).
else clause is omitted and no other case matches, the
case expression returns the default value for its type (
nil for a reference or nullable type, or
0-equivalent for a value type).