12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- //
- // 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;
- }
|