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