aboutsummaryrefslogtreecommitdiff
path: root/31_switch2.zig
diff options
context:
space:
mode:
authorDave Gauer <dave@ratfactor.com>2021-01-31 17:48:34 -0500
committerDave Gauer <dave@ratfactor.com>2021-01-31 17:48:34 -0500
commitc70fa5f58f5ca2dc010f00caee19027069a09131 (patch)
tree9f7d352065d282c15a75aa4c4168216e69a762f8 /31_switch2.zig
parent2de8a8c54d7090dd063bed8b6b283c2fcb452e43 (diff)
downloadziglings-c70fa5f58f5ca2dc010f00caee19027069a09131.tar.gz
ziglings-c70fa5f58f5ca2dc010f00caee19027069a09131.tar.bz2
ziglings-c70fa5f58f5ca2dc010f00caee19027069a09131.tar.xz
ziglings-c70fa5f58f5ca2dc010f00caee19027069a09131.zip
Adding exs 27-32
Diffstat (limited to '31_switch2.zig')
-rw-r--r--31_switch2.zig42
1 files changed, 42 insertions, 0 deletions
diff --git a/31_switch2.zig b/31_switch2.zig
new file mode 100644
index 0000000..138b809
--- /dev/null
+++ b/31_switch2.zig
@@ -0,0 +1,42 @@
+//
+// What's really nice is that you can use a switch statement as an
+// expression to return a value.
+//
+// var a = switch (x) {
+// 1 => 9,
+// 2 => 16,
+// 3 => 7,
+// ...
+// }
+//
+const std = @import("std");
+
+pub fn main() void {
+ const lang_chars = [_]u8{ 26, 9, 7, 42 };
+
+ for (lang_chars) |c| {
+ var real_char: u8 = switch (c) {
+ 1 => 'A',
+ 2 => 'B',
+ 3 => 'C',
+ 4 => 'D',
+ 5 => 'E',
+ 6 => 'F',
+ 7 => 'G',
+ 8 => 'H',
+ 9 => 'I',
+ 10 => 'J',
+ // ...
+ 25 => 'Y',
+ 26 => 'Z',
+ // As in the last exercise, please add the "else" clause
+ // and this time, have it return an exclamation mark "!".
+ };
+
+ std.debug.print("{c}", .{real_char});
+ // Note: "{c}" forces print() to display the value as a character.
+ // Can you guess what happens if you remove the "c"? Try it!
+ }
+
+ std.debug.print("\n", .{});
+}