mirror of
				https://codeberg.org/ziglings/exercises.git
				synced 2025-11-04 04:35:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Zig
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Zig
		
	
	
	
	
	
//
 | 
						|
// Believe it or not, sometimes things go wrong in programs.
 | 
						|
//
 | 
						|
// In Zig, an error is a value. Errors are named so we can identify
 | 
						|
// things that can go wrong. Errors are created in "error sets", which
 | 
						|
// are just a collection of named errors.
 | 
						|
//
 | 
						|
// We have the start of an error set, but we're missing the condition
 | 
						|
// "TooSmall". Please add it where needed!
 | 
						|
const MyNumberError = error{
 | 
						|
    TooBig,
 | 
						|
    ???,
 | 
						|
    TooFour,
 | 
						|
};
 | 
						|
 | 
						|
const std = @import("std");
 | 
						|
 | 
						|
pub fn main() void {
 | 
						|
    const nums = [_]u8{ 2, 3, 4, 5, 6 };
 | 
						|
 | 
						|
    for (nums) |n| {
 | 
						|
        std.debug.print("{}", .{n});
 | 
						|
 | 
						|
        const number_error = numberFail(n);
 | 
						|
 | 
						|
        if (number_error == MyNumberError.TooBig) {
 | 
						|
            std.debug.print(">4. ", .{});
 | 
						|
        }
 | 
						|
        if (???) {
 | 
						|
            std.debug.print("<4. ", .{});
 | 
						|
        }
 | 
						|
        if (number_error == MyNumberError.TooFour) {
 | 
						|
            std.debug.print("=4. ", .{});
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    std.debug.print("\n", .{});
 | 
						|
}
 | 
						|
 | 
						|
// Notice how this function can return any member of the MyNumberError
 | 
						|
// error set.
 | 
						|
fn numberFail(n: u8) MyNumberError {
 | 
						|
    if (n > 4) return MyNumberError.TooBig;
 | 
						|
    if (n < 4) return MyNumberError.TooSmall; // <---- this one is free!
 | 
						|
    return MyNumberError.TooFour;
 | 
						|
}
 |