aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/exercises
diff options
context:
space:
mode:
authorDave Gauer <dave@ratfactor.com>2021-05-09 14:25:51 -0400
committerDave Gauer <dave@ratfactor.com>2021-05-09 14:25:51 -0400
commitc0bbbee1764513e3c31e586555e76fda2c3408bc (patch)
tree0db501ff243a2b3b1809cad108e961e27cdd51ad /exercises
parentae0dc2b282d7f59ad57b4f6152bf07db62138b9a (diff)
add ex081 anon structs 2
Diffstat (limited to 'exercises')
-rw-r--r--exercises/081_anonymous_structs2.zig47
1 files changed, 47 insertions, 0 deletions
diff --git a/exercises/081_anonymous_structs2.zig b/exercises/081_anonymous_structs2.zig
new file mode 100644
index 0000000..6871cc1
--- /dev/null
+++ b/exercises/081_anonymous_structs2.zig
@@ -0,0 +1,47 @@
+//
+// An anonymous struct value LITERAL (not to be confused with a
+// struct TYPE) uses '.{}' syntax:
+//
+// .{
+// .center_x = 15,
+// .center_y = 12,
+// .radius = 6,
+// }
+//
+// These literals are always evaluated entirely at compile-time.
+// The example above could be coerced into the i32 variant of the
+// "circle struct" from the last exercise.
+//
+// Or you can let them remain entirely anonymous as in this
+// example:
+//
+// fn bar(foo: anytype) void {
+// print("a:{} b:{}\n", .{foo.a, foo.b});
+// }
+//
+// bar(.{
+// .a = true,
+// .b = false,
+// });
+//
+// The example above prints "a:true b:false".
+//
+const print = @import("std").debug.print;
+
+pub fn main() void {
+ printCircle(.{
+ .center_x = @as(u32, 205),
+ .center_y = @as(u32, 187),
+ .radius = @as(u32, 12),
+ });
+}
+
+// Please complete this function which prints an anonymous struct
+// representing a circle.
+fn printCircle(???) void {
+ print("x:{} y:{} radius:{}\n", .{
+ circle.center_x,
+ circle.centaur_y,
+ circle.radius,
+ });
+}