Merge pull request 'Update: 108 Labeled switch example to contain default case for exhaustion' (#196) from mikkurogue/exercises:main into main

Reviewed-on: https://codeberg.org/ziglings/exercises/pulls/196
closes #195
This commit is contained in:
Chris Boesch 2025-01-08 14:30:04 +00:00
commit b1fcca9d82

View file

@ -15,11 +15,11 @@
// 1 => { op = 2; continue; },
// 2 => { op = 3; continue; },
// 3 => return,
// 4 => {},
// else => {},
// }
// break;
// }
// std.debug.print("This statement cannot be reached");
// std.debug.print("This statement cannot be reached\n", .{});
// }
//
// By combining all we've learned so far, we can now proceed with a labeled switch
@ -34,9 +34,9 @@
// 1 => continue :foo 2,
// 2 => continue :foo 3,
// 3 => return,
// 4 => {},
// else => {},
// }
// std.debug.print("This statement cannot be reached");
// std.debug.print("This statement cannot be reached\n", .{});
// }
//
// The flow of execution on this second case is:
@ -45,10 +45,12 @@
// to re-evaluate the labeled switch again, now providing the value '2';
// 3. In the case '2' we repeat the same pattern as case '1'
// but instead the value to be evaluated is now '3';
// 4. Finally we get to case '3', where we return from the function as a whole.
// 4. Finally we get to case '3', where we return from the function as a whole,
// so the debug statement is never executed.
// 5. In this example, since the input does not have clear, exhaustive patterns and
// can essentially be any 'u8' integer, we need to handle all cases not explicitly
// covered by using the 'else => {}' branch as the default case.
//
// Since step 4 or a break stament do not exist in this switch, the debug statement is
// never executed
//
const std = @import("std");