Browse Source

Added type reflection to 066

Dave Gauer 4 years ago
parent
commit
dd06f3c95f
2 changed files with 13 additions and 3 deletions
  1. 1 1
      build.zig
  2. 12 2
      exercises/066_comptime.zig

+ 1 - 1
build.zig

@@ -333,7 +333,7 @@ const exercises = [_]Exercise{
     },
     .{
         .main_file = "066_comptime.zig",
-        .output = "const_int=12345, const_float=987.654, var_int=54321, var_float=456.789",
+        .output = "Immutable: 12345, 987.654; Mutable: 54321, 456.789; Types: comptime_int, comptime_float, u32, f32",
         .hint = "It may help to read this one out loud to your favorite stuffed animal until it sinks in completely."
     },
 };

+ 12 - 2
exercises/066_comptime.zig

@@ -47,7 +47,7 @@ pub fn main() void  {
     const const_int = 12345;
     const const_float = 987.654;
 
-    print("const_int={}, const_float={d:.3}, ", .{const_int, const_float});
+    print("Immutable: {}, {d:.3}; ", .{const_int, const_float});
 
     // But something changes when we assign the exact same values
     // to identifiers mutably with "var".
@@ -70,5 +70,15 @@ pub fn main() void  {
     var_int = 54321;
     var_float = 456.789;
 
-    print("var_int={}, var_float={d:.3}\n", .{var_int, var_float});
+    print("Mutable: {}, {d:.3}; ", .{var_int, var_float});
+
+    // Bonus: Now that we're familiar with Zig's builtins, we can
+    // also inspect the types to see what they are, no guessing
+    // needed!
+    print("Types: {}, {}, {}, {}\n", .{
+        @TypeOf(const_int),
+        @TypeOf(const_float),
+        @TypeOf(var_int),
+        @TypeOf(var_float),
+    });
 }