mirror of
https://codeberg.org/ziglings/exercises.git
synced 2024-12-25 01:00:26 +00:00
update labeled switch to also have a break statement
This commit is contained in:
parent
798bb40396
commit
db569a1478
2 changed files with 21 additions and 10 deletions
|
@ -6,14 +6,14 @@
|
|||
// foo: switch (state) {
|
||||
// 1 => continue :foo 2,
|
||||
// 2 => continue :foo 3,
|
||||
// 3 => return,
|
||||
// 3 => break :foo,
|
||||
// 4 => {},
|
||||
// ...
|
||||
// }
|
||||
//
|
||||
const std = @import("std");
|
||||
|
||||
const PullRequestState = enum {
|
||||
const PullRequestState = enum(u8) {
|
||||
Draft,
|
||||
InReview,
|
||||
Approved,
|
||||
|
@ -22,13 +22,17 @@ const PullRequestState = enum {
|
|||
};
|
||||
|
||||
pub fn main() void {
|
||||
// Something is wrong, it seems your Pull Request can never be merged
|
||||
// try to fix it!
|
||||
// Oh no, your pull request keeps being rejected,
|
||||
// how would you fix it?
|
||||
pr: switch (@as(PullRequestState, PullRequestState.Draft)) {
|
||||
PullRequestState.Draft => continue :pr PullRequestState.InReview,
|
||||
PullRequestState.InReview => continue :pr PullRequestState.Rejected,
|
||||
PullRequestState.Approved => continue :pr PullRequestState.Merged,
|
||||
PullRequestState.Rejected => std.debug.print("The pull request has been rejected", .{}),
|
||||
PullRequestState.Merged => std.debug.print("The pull request has been merged", .{}),
|
||||
PullRequestState.Rejected => {
|
||||
std.debug.print("The pull request has been rejected", .{});
|
||||
return;
|
||||
},
|
||||
PullRequestState.Merged => break, // Would you know where to break to?
|
||||
}
|
||||
std.debug.print("The pull request has been merged", .{});
|
||||
}
|
||||
|
|
|
@ -1,11 +1,18 @@
|
|||
--- a/exercises/108_labeled_switch.zig
|
||||
+++ b/exercises/108_labeled_switch.zig
|
||||
@@ -26,7 +26,7 @@ pub fn main() void {
|
||||
// try to fix it!
|
||||
@@ -26,13 +26,13 @@ pub fn main() void {
|
||||
// how would you fix it?
|
||||
pr: switch (@as(PullRequestState, PullRequestState.Draft)) {
|
||||
PullRequestState.Draft => continue :pr PullRequestState.InReview,
|
||||
- PullRequestState.InReview => continue :pr PullRequestState.Rejected,
|
||||
+ PullRequestState.InReview => continue :pr PullRequestState.Approved,
|
||||
PullRequestState.Approved => continue :pr PullRequestState.Merged,
|
||||
PullRequestState.Rejected => std.debug.print("The pull request has been rejected", .{}),
|
||||
PullRequestState.Merged => std.debug.print("The pull request has been merged", .{}),
|
||||
PullRequestState.Rejected => {
|
||||
std.debug.print("The pull request has been rejected", .{});
|
||||
return;
|
||||
},
|
||||
- PullRequestState.Merged => break, // Would you know where to break to?
|
||||
+ PullRequestState.Merged => break :pr, // Would you know where to break to?
|
||||
}
|
||||
std.debug.print("The pull request has been merged", .{});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue