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

results matching ""

    No results matching ""