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