enum
lib
안의 enum
선언은 C 열거형을 선언합니다.
lib X
# C에서는
#
# enum SomeEnum {
# Zero,
# One,
# Two,
# Three,
# };
enum SomeEnum
Zero
One
Two
Three
end
end
C에서와 마찬가지로 열거형의 첫 멤버는 0의 값을 가지며 그 뒤로 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