@enumFromInt: 정수를 enum 값으로 바꾸기

@enumFromInt: 정수를 enum 값으로 바꾸기

정수를 그에 해당하는 enum 값으로 변환하는 내장 함수를 살펴볼게요. 이 함수는 예전에는 @intToEnum이라는 이름이었는데, 최신 Zig에서는 @enumFromInt로 이름이 바뀌었어요. 지금은 이 이름을 쓰면 돼요.

출처: Zig Documentation

본문

@enumFromInt는 정수를 enum 값으로 변환하는 내장 함수예요. 반환 타입은 추론된 결과 타입(inferred result type)으로 정해져요. 프로토타입은 이렇게 생겼어요.

@enumFromInt(integer: anytype) anytype

한 가지 먼저 짚고 갈게요. 이 함수는 지금은 deprecated(더 이상 권장되지 않는) 상태예요. 새로 작성하는 코드에서는 대신 @fromBackingInt@bitCast를 사용하는 걸 권장해요.

변환 동작에서 꼭 알아둬야 할 부분이 있어요. enum에 대응하는 값이 없는 정수를 변환하려고 하면, safety-checked Illegal Behavior(안전 검사로 잡아내는 잘못된 동작)이 발동해요. 다만 non-exhaustive enum(비완전 열거형)은 예외인데요, 이런 enum은 자기 정수 tag 타입에 있는 모든 정수에 대응하는 값을 갖기 때문이에요. 여기서 _ 값이 이름 없는 나머지 정수들을 전부 대표해 줘요.

함께 보기: @intFromEnum — 반대 방향(enum → 정수)으로 변환하는 함수예요.

더 알아보기(Learn more)

  • @fromBackingInt — enum의 backing 정수 tag 값을 직접 다룰 때 쓰는 권장 함수예요.
  • @bitCast — 값을 비트 단위로 reinterpret(재해석)하는 변환이에요.
  • @intFromEnum — enum 값을 정수로 되돌리는 역방향 변환이에요.