46 lines
1.4 KiB
Markdown
46 lines
1.4 KiB
Markdown
# Switch statements
|
|
|
|
**NOTE:** Switch statements are not yet supported. They are a planned feature, but will take a long time until they are implemented
|
|
|
|
## Syntax
|
|
|
|
Switch statements differ quite a lot from other languages, as you can see. First, we have the `switch` keyword, followed by an expression (the value) in parenthesis. Then, we have a series of `case` statements, and optionally, a `default` statement (not necessarily the last one, but the compiler will warn you about it).
|
|
|
|
In contrast to other C-like languages, cases in a switch statemnets are more like simplified if statements, so they are written with first the `case` (or `default`) keyword, followed (if a statement) by the value in parenthesis and after that the statement of the case.
|
|
|
|
In real code, this would look like this:
|
|
|
|
```c#
|
|
switch (value)
|
|
case(val1) statement;
|
|
case(val2) statement;
|
|
...
|
|
default statement;
|
|
```
|
|
|
|
## Behavior
|
|
|
|
Behaves just like an if-elseif-else chain. Compares the value to each given case's values, and runs each case which contains the value in its value list.
|
|
|
|
## Possible optimizations
|
|
|
|
If a value is determined to not be possible, yet is a case in the switch statement, its going to be removed. For example, the following code:
|
|
|
|
```c
|
|
if (val != 3) {
|
|
switch (val)
|
|
case (1) printf("1");
|
|
case (2) printf("2");
|
|
case (3) printf("3");
|
|
}
|
|
```
|
|
|
|
Will be converted to:
|
|
|
|
```c
|
|
if (val != 3) {
|
|
switch (val)
|
|
case (1) printf("1");
|
|
case (2) printf("2");
|
|
}
|
|
``` |