summaryrefslogtreecommitdiffstatshomepage
path: root/exercises/30_switch.zig
diff options
context:
space:
mode:
Diffstat (limited to 'exercises/30_switch.zig')
-rw-r--r--exercises/30_switch.zig55
1 files changed, 55 insertions, 0 deletions
diff --git a/exercises/30_switch.zig b/exercises/30_switch.zig
new file mode 100644
index 0000000..b10ad14
--- /dev/null
+++ b/exercises/30_switch.zig
@@ -0,0 +1,55 @@
+//
+// The "switch" statement lets you match the possible values of an
+// expression and perform a different action for each.
+//
+// This switch:
+//
+// switch (players) {
+// 1 => startOnePlayerGame(),
+// 2 => startTwoPlayerGame(),
+// else => {
+// alert();
+// return GameError.TooManyPlayers;
+// }
+// }
+//
+// Is equivalent to this if/else:
+//
+// if (players == 1) startOnePlayerGame();
+// else if (players == 2) startTwoPlayerGame();
+// else {
+// alert();
+// return GameError.TooManyPlayers;
+// }
+//
+//
+//
+const std = @import("std");
+
+pub fn main() void {
+ const lang_chars = [_]u8{ 26, 9, 7, 42 };
+
+ for (lang_chars) |c| {
+ switch (c) {
+ 1 => std.debug.print("A", .{}),
+ 2 => std.debug.print("B", .{}),
+ 3 => std.debug.print("C", .{}),
+ 4 => std.debug.print("D", .{}),
+ 5 => std.debug.print("E", .{}),
+ 6 => std.debug.print("F", .{}),
+ 7 => std.debug.print("G", .{}),
+ 8 => std.debug.print("H", .{}),
+ 9 => std.debug.print("I", .{}),
+ 10 => std.debug.print("J", .{}),
+ // ... we don't need everything in between ...
+ 25 => std.debug.print("Y", .{}),
+ 26 => std.debug.print("Z", .{}),
+ // Switch statements must be "exhaustive" (there must be a
+ // match for every possible value). Please add an "else"
+ // to this switch to print a question mark "?" when c is
+ // not one of the existing matches.
+ }
+ }
+
+ std.debug.print("\n", .{});
+}