enum
Une déclaration enum
dans une lib
déclare une enum C:
lib X
# En C:
#
# enum SomeEnum {
# Zero,
# One,
# Two,
# Three,
# };
enum SomeEnum
Zero
One
Two
Three
end
end
Comme en C, le premier membre d'une enum a une valeur de zéro et chaque valeur successive est incrémentée de un.
Pour utiliser une valeur:
X::SomeEnum::One #=> One
Vous pouvez spécifier la valeur d'un membre:
lib X
enum SomeEnum
Ten = 10
Twenty = 10 * 2
ThirtyTwo = 1 << 5
end
end
Comme vous pouvez le voir, des expressions mathématiques de base sont autorisées pour la valeur d'un membre: +
, -
, *
, /
, &
, |
, <<
, >>
et %
.
Le type d'un membre enum est Int32
par defaut, même si vous spécifiez un type différent dans une valeur constante:
lib X
enum SomeEnum
A = 1_u32
end
end
X::SomeEnum #=> 1_i32
Néanmoins, vous pouvez changer ce type par défaut:
lib X
enum SomeEnum : Int8
Zero,
Two = 2
end
end
X::SomeEnum::Zero #=> 0_i8
X::SomeEnum::Two #=> 2_i8
Vous pouvez utiliser une enum comme type dans un argument de fun
ou des membres struct
ou union
:
lib X
enum SomeEnum
One
Two
end
fun some_fun(value : SomeEnum)
end