@tagName
@tagName
도입
@tagName은 enum(열거형) 값이나 union(공용체) 값을 그 이름을 담은 문자열 리터럴로 바꿔 주는 내장 함수예요. 값 자체가 아니라 값이 가리키는 '이름'을 문자열로 돌려준다고 생각하면 돼요. 디버깅 로그나 메시지를 만들 때 값의 이름을 그대로 찍고 싶을 때 아주 편리하죠.
본문
@tagName(value: anytype) [:0]const u8
이 함수는 전달받은 값을 받아 그 값에 해당하는 이름(name)을 [:0]const u8 형태의 문자열 리터럴로 돌려줘요. 여기서 받을 수 있는 값은 enum 값이거나 union 값이에요. 예를 들어 enum의 어떤 태그 값을 넘기면, 그 태그가 정의된 이름 문자열이 반환되는 거죠.
한 가지 꼭 기억해 둘 부분이 있어요. non-exhaustive(비-완전) enum이라면 값과 이름이 항상 일대일로 맵핑되어 있지 않아요. 그래서 만약 이름으로 맵핑되지 않는 태그 값이 들어오면, safety-checked Illegal Behavior 를 일으켜요. 즉, 정의되지 않은 이름을 요구하면 안전 검사에 걸려 프로그램이 문제를 알려주는 방식으로 처리된다고 이해하면 돼요.
더 알아보기(Learn more)
@tagName은 enum 값이나 union 값을 그것을 나타내는 이름 문자열([:0]const u8)로 변환해 줘요.- non-exhaustive enum에서 이름에 맵핑되지 않는 값이 들어오면 safety-checked
Illegal Behavior가 발생해요. - 코드와 식별자는 원문 그대로 보존했어요.