Dave Gauer 4 лет назад
Родитель
Сommit
c0bbbee176
3 измененных файлов с 59 добавлено и 0 удалено
  1. 4 0
      build.zig
  2. 47 0
      exercises/081_anonymous_structs2.zig
  3. 8 0
      patches/patches/081_anonymous_structs2.patch

+ 4 - 0
build.zig

@@ -400,6 +400,10 @@ const exercises = [_]Exercise{
         .main_file = "080_anonymous_structs.zig",
         .output = "[Circle(i32): 25,70,15] [Circle(f32): 25.2,71.0,15.7]",
     },
+    .{
+        .main_file = "081_anonymous_structs2.zig",
+        .output = "x:205 y:187 radius:12",
+    },
 };
 
 /// Check the zig version to make sure it can compile the examples properly.

+ 47 - 0
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,
+    });
+}

+ 8 - 0
patches/patches/081_anonymous_structs2.patch

@@ -0,0 +1,8 @@
+41c41
+< fn printCircle(???) void {
+---
+> fn printCircle(circle: anytype) void {
+44c44
+<         circle.centaur_y,
+---
+>         circle.center_y,