enum¶
lib
の中で enum
を宣言することで C の列挙型を宣言できます。
lib X
# C では:
#
# enum SomeEnum {
# Zero,
# One,
# Two,
# Three,
# };
enum SomeEnum
Zero
One
Two
Three
end
end
C と同じく、列挙型の最初の要素はゼロで、以降の要素はそれぞれ1ずつ増加した値となります。
値は以下のように利用します。
X::SomeEnum::One # => One
要素の値を指定することも可能です。
lib X
enum SomeEnum
Ten = 10
Twenty = 10 * 2
ThirtyTwo = 1 << 5
end
end
上記のように、要素の値には +
、-
、*
、/
、&
、 |
、<<
、>>
、%
といった基本的な計算を行うこともできます。
列挙型の要素の型はデフォルトで 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
のメンバとしても列挙型が利用できます。
lib X
enum SomeEnum
One
Two
end
fun some_fun(value : SomeEnum)
end