aboutsummaryrefslogtreecommitdiff
path: root/32_iferror.zig
diff options
context:
space:
mode:
authorDave Gauer <dave@ratfactor.com>2021-02-03 19:19:31 -0500
committerDave Gauer <dave@ratfactor.com>2021-02-03 19:19:31 -0500
commit738a9f6cda62f3570e44dc93f8e200afc2cc1b51 (patch)
tree0f690aeaee95d317d80ee3913b0fb0b6245b1edb /32_iferror.zig
parentcd80aeb19061b9d222d24cdb4d0764a210536531 (diff)
downloadziglings-738a9f6cda62f3570e44dc93f8e200afc2cc1b51.tar.gz
ziglings-738a9f6cda62f3570e44dc93f8e200afc2cc1b51.tar.bz2
ziglings-738a9f6cda62f3570e44dc93f8e200afc2cc1b51.tar.xz
ziglings-738a9f6cda62f3570e44dc93f8e200afc2cc1b51.zip
Inserted ex. 32 unreachable, added quiz4.
Diffstat (limited to '32_iferror.zig')
-rw-r--r--32_iferror.zig49
1 files changed, 0 insertions, 49 deletions
diff --git a/32_iferror.zig b/32_iferror.zig
deleted file mode 100644
index ed92e94..0000000
--- a/32_iferror.zig
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// Let's revisit the very first error exercise. This time, we're going to
-// look at a special error-handling type of the "if" statement.
-//
-// if (foo) |value| {
-//
-// // foo was NOT an error; value is the non-error value of foo
-//
-// } else |err| {
-//
-// // foo WAS an error; err is the error value of foo
-//
-// }
-//
-// We'll take it even further and use a switch statement to handle
-// the error types.
-//
-const MyNumberError = error{
- TooBig,
- TooSmall,
-};
-
-const std = @import("std");
-
-pub fn main() void {
- var nums = [_]u8{2,3,4,5,6};
-
- for (nums) |num| {
- std.debug.print("{}", .{num});
-
- var n = numberMaybeFail(num);
- if (n) |value| {
- std.debug.print("=4. ", .{});
- } else |err| switch (err) {
- MyNumberError.TooBig => std.debug.print(">4. ", .{}),
- // Please add a match for TooSmall here and have it print: "<4. "
- }
- }
-
- std.debug.print("\n", .{});
-}
-
-// This time we'll have numberMaybeFail() return an error union rather
-// than a straight error.
-fn numberMaybeFail(n: u8) MyNumberError!u8 {
- if(n > 4) return MyNumberError.TooBig;
- if(n < 4) return MyNumberError.TooSmall;
- return n;
-}