0Pricing
Zig Academy · 강의

@Type로 타입 만들기

프로그램으로 새 타입을 구성합니다.

@Type로 타입 만들기은(는) CoddyKit의 무료 Zig Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Zig Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Zig Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

@typeInfo의 반대

@typeInfo가 타입을 데이터로 바꾼다면 @Type은 데이터를 다시 실제 타입으로 바꿉니다. 둘을 함께 사용하면 컴파일 시 타입의 형태를 바꿀 수 있습니다. 🛠️

Type.Info 값 전달하기

@Type은 std.builtin.Type 값을 받아 해당 값이 설명하는 구체적인 타입을 생성합니다. 설명을 전달하면 타입을 돌려줍니다.

const T = @Type(.{ .Int = .{ .signedness = .unsigned, .bits = 8 } });

정수 타입 만들기

위의 예제는 u8을 처음부터 구성합니다. bits를 16으로 바꾸면 u16을 얻으며, 이 모든 결정은 프로그램이 컴파일되는 동안 이루어집니다.

const U16 = @Type(.{ .Int = .{ .signedness = .unsigned, .bits = 16 } });

타입 왕복 변환

@typeInfo를 거친 타입에 @Type을 적용하면 완전히 동일한 타입이 반환됩니다. 이는 두 내장 함수가 정확히 서로의 역함수임을 보여 줍니다.

const Same = @Type(@typeInfo(u32));

구조체를 데이터로 표현하기

구조체를 만들려면 StructField 배열을 채워야 합니다. 각 필드에는 이름, 타입, 정렬, 기본값 포인터가 필요합니다.

const f = std.builtin.Type.StructField;

구조체 데이터 구성하기

필드를 레이아웃과 is_tuple 플래그가 포함된 .Struct 데이터로 감싼 다음, 전체를 @Type에 전달합니다.

const info = .{ .Struct = .{
    .layout = .auto,
    .fields = my_fields,
    .decls = &.{},
    .is_tuple = false,
} };

새 구조체 타입 생성하기

해당 데이터를 @Type에 전달하면 직접 작성하는 대신 원하는 로직으로 만든 새로운 구조체 타입을 얻습니다.

const Generated = @Type(info);

기본값에는 컴파일 타임 포인터가 필요합니다

필드의 default_value는 값에 대한 선택적 상수 포인터이며, 기본값이 없으면 null입니다. 이 포인터는 컴파일 타임에 알려져 있어야 합니다.

const dv: ?*const anyopaque = &@as(u8, 0);

열거형과 그 밖의 타입 만들기

같은 방법은 구조체 외에도 사용할 수 있습니다. .Enum 데이터는 계산된 멤버 목록으로부터 @Type이 열거형 타입을 만들어 내도록 합니다.

타입을 생성하는 이유

생성된 타입은 직렬 변환기와 ORM을 구동합니다. 직접 수정하는 대신 패킹된 구성 타입이나 행 타입을 자동으로 만들어 낼 수 있습니다. ✨

리플렉션과 함께 사용하기

가장 강력한 패턴은 @typeInfo로 타입을 읽고 데이터를 변환한 뒤, 필드를 추가하는 것처럼 @Type으로 새 타입을 다시 만드는 것입니다.

빠른 확인

구조체를 설명하는 std.builtin.Type 값이 있습니다. 이것을 사용할 수 있는 타입으로 바꾸려면 무엇을 사용해야 할까요?

정리

@Type은 Type.Info 데이터로부터 실제 타입을 만들며, @typeInfo와 서로 반대되는 역할을 합니다. 두 기능을 함께 사용하면 타입을 읽고, 변환하고, 다시 생성할 수 있습니다. 🎯

자주 묻는 질문

“@Type로 타입 만들기” 강의는 무료인가요?

네 — “@Type로 타입 만들기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Zig Academy 강의 전체를 잠금 해제할 수 있습니다. Zig Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“@Type로 타입 만들기”에서 뭘 배우나요?

프로그램으로 새 타입을 구성합니다. 브라우저에서 직접 실행하는 실습 코드로 Zig Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Zig Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Zig Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“@Type로 타입 만들기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Zig Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Zig Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. @typeInfo로 필드 반영하기
  2. @Type로 타입 만들기
  3. 컴파일 시점 검증과 @compileError
  4. comptime으로 코드 생성하기
← Zig Academy(으)로 돌아가기