열거형 (enum)과 타입 별칭 (type alias)
Wave는 C와 유사한 명시적 타입 시스템을 유지하면서도, 가독성과 ABI 안정성을 위해 타입 별칭(type alias) 과 정수 기반 열거형(enum) 을 지원한다.
타입 별칭 (Type Alias)
개요
type 키워드는 기존 타입에 새로운 이름을 부여한다. 이는 새로운 타입을 만드는 것이 아니라, 완전한 동치(alias) 이다.
type MyInt = i32;
위 선언에서 MyInt는 i32와 완전히 동일한 타입이다.
특징
- 런타임 오버헤드 없음
- ABI 상 완전히 동일
- 컴파일 타임에만 존재
- enum의 repr 타입으로 사용 가능
사용 예시
type Size = i64;
type Index = u32;
fun add(a: Size, b: Size) -> Size {
return a + b;
}
타입 동치성
type A = i32;
type B = A;
fun f(x: i32) -> i32 { return x; }
fun main() {
var v: B = 10;
f(v); // OK
}
type은 새 타입이 아니라 이름만 다른 타입이다.