에러는 단순히 값으로 취급합니다. 에러 셋(error sets) 을 만드는 방법은 아래와 같습니다.
---------------------------------------------------------------------------------------------------
const 에러 셋 이름 = error
{
// 에러 값들
};
---------------------------------------------------------------------------------------------------
예시
const MyErrorSet = error
{
TooSmall,
TooBig,
};
fn detectProblems (n : u32) MyErrorSet ! u32
{
if (n < 10) return MyErrorSet.TooSmall;
if (n > 20) return MyErrorSet.TooBig;
return n;
}
// 숫자가 10 보다 작거나 20 보다 크면 에러값을 반환
const error = detectProblems(30);
std.debug.print("{}", .{error}); // "error.TooBig" 출력됨
일반적인 값 또는 에러 상태를 같이 가질 수 있는 변수를 만들 수도 있습니다.
---------------------------------------------------------------------------------------------------
const 또는 var 변수 이름 : 에러 셋 이름 ! 형태와 크기 = 할당할 초기 값 또는 에러 값
---------------------------------------------------------------------------------------------------
예시
var my_number_or_error : MyErrorSet ! u8 = 5
일반적인 값 또는 에러 상태를 반환하는 함수는 다음과 같이 만듭니다.
---------------------------------------------------------------------------------------------------
pub 또는 생략 fn 함수이름 ( 입력 인자들... ) 에러 셋 이름 ! 형태와 크기
{
// 함수 호출시 실행될 내용
일반 반환 값 또는 에러 값 ;
}
에러 셋 이름 ! 형태와 크기 : 이 전체를 하나의 반환형으로 생각하시면 좋습니다.
---------------------------------------------------------------------------------------------------
예시
// 입력 값이 10 미만이면 에러를 반환하고 아니면 10을 빼는 함수
fn subtractTenOrError ( n : u32 ) MyErrorSet ! u32
{
if (n < 10)
{
return MyErrorSet.TooSmall;
}
else
{
return n - 10;
}
}
'Zig' 카테고리의 다른 글
[Zig] switch 조건문(statement) (0) | 2024.03.21 |
---|---|
[Zig] 지연(defer) (0) | 2024.03.20 |
[Zig] 함수(functions) (0) | 2024.03.20 |
[Zig] for 반복문(loop) (0) | 2024.03.20 |
[Zig] while 반복문(loop) (0) | 2024.03.20 |