Switches
TypeScript developers are familiar with the switch statement. By
contrast, pattern matching is a conditional
expression that destructures a value of almost any type to control the
flow of execution. Switches only work on simple types, like int,
nat, bool, string etc., which makes them akin to enumerated
types. They are most useful when they avoid writing nested
conditional statements.
function hello (day: nat) : string {
let greeting = "Hello";
switch (day) {
case 1n: greeting += " Monday!"; break;
case 2n: greeting += " Tuesday!"; break;
case 3n: greeting += " Wednesday!"; break;
case 4n: greeting += " Thursday!"; break;
case 5n: greeting += " Friday!"; break;
case 6n: greeting += " Saturday!"; break;
case 7n: greeting += " Sunday!"; break;
default: greeting += "!"; break;
};
return greeting;
}
Each case is introduced by the keyword case, except the default
case, which must be last and applies when all the previous cases have
failed to match.