enum¶
lib 内の enum 宣言は、C の enum を宣言します。
lib X
# In C:
#
# enum SomeEnum {
# Zero,
# One,
# Two,
# Three,
# };
enum SomeEnum
Zero
One
Two
Three
end
end
C と同様に、enum の最初のメンバは値がゼロで、後続の各値は 1 ずつインクリメントされます。
値を使用するには
X::SomeEnum::One # => One
メンバの値を指定できます
lib X
enum SomeEnum
Ten = 10
Twenty = 10 * 2
ThirtyTwo = 1 << 5
end
end
ご覧のとおり、いくつかの基本的な算術演算がメンバの値に許可されています。+、-、*、/、&、|、<<、>>、および %。
enum メンバの型は、定数値に異なる型を指定した場合でも、デフォルトでは Int32 です。
lib X
enum SomeEnum
A = 1_u32
end
end
X::SomeEnum # => 1_i32
ただし、このデフォルト型は変更できます
lib X
enum SomeEnum : Int8
Zero
Two = 2
end
end
X::SomeEnum::Zero # => 0_i8
X::SomeEnum::Two # => 2_i8
fun のパラメータ、または struct や union のメンバの型として enum を使用できます。
lib X
enum SomeEnum
One
Two
end
fun some_fun(value : SomeEnum)
end