@TypeOf와 타입 리플렉션
제네릭성을 유지하도록 타입을 검사합니다.
@TypeOf와 타입 리플렉션은(는) CoddyKit의 무료 Zig Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Zig Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Zig Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
타입에 대해 알아보기
제네릭 코드는 값을 직접 명시하지 않고도 그 값의 타입을 알아야 하는 경우가 많습니다. Zig에서는 내장 기능 @TypeOf가 이를 처리합니다. 🔍
@TypeOf는 타입을 반환합니다
@TypeOf에 하나 이상의 표현식을 전달하면 컴파일 타임에 계산된 해당 표현식의 타입을 반환합니다.
const T = @TypeOf(value);표현식을 실행하지 않습니다
@TypeOf의 인수는 검사만 하고 실행하지 않습니다. 그 안에 함수 호출이 있어도 살펴보기만 할 뿐 실제로 실행하지는 않습니다.
매개변수의 타입 캡처
제네릭 함수 내부에서는 어떤 인수의 타입이든 이름을 붙여 재사용할 수 있습니다. 예를 들어 이에 맞는 지역 변수를 선언할 수 있습니다.
fn echo(x: anytype) void {
const T = @TypeOf(x);
_ = T;
}읽기 쉬운 이름 얻기
내장 기능 @typeName은 타입을 읽기 쉬운 문자열로 바꿔 주므로 디버그 출력이나 오류 메시지에 유용합니다.
const name = @typeName(i32);@typeInfo로 더 깊이 리플렉션하기
전체 정보를 얻으려면 @typeInfo가 타입을 설명하는 태그된 유니온을 반환합니다. 해당 타입이 정수인지, 구조체인지, 포인터인지 등을 알 수 있습니다.
const info = @typeInfo(i32);타입 종류에 따라 분기하기
결과가 태그된 유니온이므로 이를 switch로 분기해 하나의 제네릭 함수에서 정수, 부동 소수점 수, 구조체를 서로 다르게 처리할 수 있습니다.
switch (@typeInfo(T)) {
.int => {},
else => {},
}정수의 비트 너비 읽기
타입이 정수라면 정보에 bits와 부호 여부 같은 필드가 포함되므로 정확한 너비에 맞게 로직을 조정할 수 있습니다.
const bits = @typeInfo(u16).int.bits;리플렉션으로 코드를 제네릭하게 유지하기
타입을 코드에 직접 지정하는 대신 검사하면 하나의 함수가 다양한 입력 타입을 올바르게 처리할 수 있습니다. 이것이 Zig 리플렉션의 핵심입니다. ✨
모두 컴파일 타임에 수행됩니다
모든 리플렉션 내장 기능은 빌드 중에 실행되므로 이러한 검사로 인해 완성된 프로그램에 런타임 오버헤드가 전혀 추가되지 않습니다.
구조체의 필드 나열
구조체에서는 @typeInfo가 필드 배열을 제공하므로 컴파일 타임에 이를 순회하며 각 필드의 이름과 타입을 읽을 수 있습니다.
const fields = @typeInfo(Point).@"struct".fields;빠른 확인
제네릭 함수 내부에 x라는 값이 있고 그 타입을 알고 싶습니다. 어떤 내장 기능을 사용해야 하나요?
복습
@TypeOf로 값의 타입을 알아내고 @typeInfo로 그 구조를 검사하세요. 해당 정보를 기준으로 분기하면 하나의 함수가 여러 타입에 맞게 동작할 수 있습니다. 🎯
자주 묻는 질문
“@TypeOf와 타입 리플렉션” 강의는 무료인가요?
네 — “@TypeOf와 타입 리플렉션” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Zig Academy 강의 전체를 잠금 해제할 수 있습니다. Zig Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“@TypeOf와 타입 리플렉션”에서 뭘 배우나요?
제네릭성을 유지하도록 타입을 검사합니다. 브라우저에서 직접 실행하는 실습 코드로 Zig Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Zig Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Zig Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“@TypeOf와 타입 리플렉션” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Zig Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Zig Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 타입을 받는 함수
- 제네릭 자료 구조
- @TypeOf와 타입 리플렉션
- anytype 매개변수