aboutsummaryrefslogtreecommitdiff
path: root/exercises/28_defer2.zig
diff options
context:
space:
mode:
authorDave Gauer <dave@ratfactor.com>2021-02-09 18:36:57 -0500
committerDave Gauer <dave@ratfactor.com>2021-02-09 18:36:57 -0500
commit55ad7c32f2d534b1fbd438204d21738f958c51a5 (patch)
tree16be4b53193105a759b3eec25be5e664d41c428d /exercises/28_defer2.zig
parentcf0920de31e9b5f3c5ba6de19a1b4c8d0c58b907 (diff)
downloadziglings-55ad7c32f2d534b1fbd438204d21738f958c51a5.tar.gz
ziglings-55ad7c32f2d534b1fbd438204d21738f958c51a5.tar.bz2
ziglings-55ad7c32f2d534b1fbd438204d21738f958c51a5.tar.xz
ziglings-55ad7c32f2d534b1fbd438204d21738f958c51a5.zip
Moved exercises to exercises because exercises
Diffstat (limited to 'exercises/28_defer2.zig')
-rw-r--r--exercises/28_defer2.zig29
1 files changed, 29 insertions, 0 deletions
diff --git a/exercises/28_defer2.zig b/exercises/28_defer2.zig
new file mode 100644
index 0000000..5c991da
--- /dev/null
+++ b/exercises/28_defer2.zig
@@ -0,0 +1,29 @@
+//
+// Now that you know how "defer" works, let's do something more
+// interesting with it.
+//
+const std = @import("std");
+
+pub fn main() void {
+ const animals = [_]u8{ 'g', 'c', 'd', 'd', 'g', 'z' };
+
+ for (animals) |a| printAnimal(a);
+
+
+ std.debug.print("done.\n", .{});
+}
+
+// This function is _supposed_ to print an animal name in parentheses
+// like "(Goat) ", but we somehow need to print the end parenthesis
+// even though this function can return in four different places!
+fn printAnimal(animal: u8) void {
+ std.debug.print("(", .{});
+
+ std.debug.print(") ", .{}); // <---- how!?
+
+ if (animal == 'g'){ std.debug.print("Goat", .{}); return; }
+ if (animal == 'c'){ std.debug.print("Cat", .{}); return; }
+ if (animal == 'd'){ std.debug.print("Dog", .{}); return; }
+
+ std.debug.print("Unknown", .{});
+}