Added type reflection to 066

This commit is contained in:
Dave Gauer 2021-04-14 11:00:25 -04:00
parent e23eba236a
commit dd06f3c95f
2 changed files with 13 additions and 3 deletions

View file

@ -333,7 +333,7 @@ const exercises = [_]Exercise{
}, },
.{ .{
.main_file = "066_comptime.zig", .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." .hint = "It may help to read this one out loud to your favorite stuffed animal until it sinks in completely."
}, },
}; };

View file

@ -47,7 +47,7 @@ pub fn main() void {
const const_int = 12345; const const_int = 12345;
const const_float = 987.654; 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 // But something changes when we assign the exact same values
// to identifiers mutably with "var". // to identifiers mutably with "var".
@ -70,5 +70,15 @@ pub fn main() void {
var_int = 54321; var_int = 54321;
var_float = 456.789; 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),
});
} }