1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- //
- // 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,
- TooSmall,
- 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(number_error == MyNumberError.TooSmall){
- 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;
- }
|