aboutsummaryrefslogtreecommitdiff
path: root/exercises
diff options
context:
space:
mode:
Diffstat (limited to 'exercises')
-rw-r--r--exercises/087_async4.zig30
1 files changed, 30 insertions, 0 deletions
diff --git a/exercises/087_async4.zig b/exercises/087_async4.zig
new file mode 100644
index 0000000..bb9c9ec
--- /dev/null
+++ b/exercises/087_async4.zig
@@ -0,0 +1,30 @@
+//
+// It has probably not escaped your attention that we are no
+// longer capturing a return value from foo() because the 'async'
+// keyword returns the frame instead.
+//
+// One way to solve this is to use a global variable.
+//
+// See if you can make this program print "1 2 3 4 5".
+//
+const print = @import("std").debug.print;
+
+var global_counter: i32 = 0;
+
+pub fn main() void {
+ var foo_frame = async foo();
+
+ while (global_counter <= 5) {
+ print("{} ", .{global_counter});
+ ???
+ }
+
+ print("\n", .{});
+}
+
+fn foo() void {
+ while (true) {
+ ???
+ ???
+ }
+}