Think of enumeration type as group of related values with which you can work in a type-safe way. You can define enumeration type like this:
enum Color {
Red,
Green,
Blue
}
Each enumerator has its value in example above Red
has value of zero,
Green
has value of one, and Blue
has value of two. In order to change
default value you can add enumerator initializer, like this:
enum Color {
Red = 1,
Green,
Blue
}
This way Red
will have value of one, Green
will have value of two and
Blue
will have value of three.
If you want, you can set initializer for every enumerator:
enum Color {
Red = 1 << 0,
Green = 1 + 1,
Blue = -1 * ~1
}
NOTE:
Only integer initializers are allowed.
You can declare enumeration variable just like an object with properties, like this:
main {
color := Color.Red
}
In example above color
variable will have Color
enumeration type.
Another way to declare an enumeration variable:
main {
color: Color = .Red
}
Difference between Color.Red
and .Red
is that first explicitly tells
compiler that .Red
belongs to enumeration Color
. While second tells
nothing about enumeration it belongs to. Consider this code:
enum EyeColor {
Brown,
Green,
Blue,
Gray
}
enum HairColor {
Black,
Brown,
Blond,
Gray
}
main {
color := .Brown
}
In example above compiler doesn’t know where from comes .Brown
enumerator,
you need to explicitly tell compiler what enumeration this enumerator belongs
to.
Default value of enumeration type is 0
, below declarations are identical:
main {
a: Color
b: Color = .Red
}
For complete list of built-in features see API.