From 9c26298549856798afbe3ad9b0bd6f5716a69c6a Mon Sep 17 00:00:00 2001 From: Andrew Scott Date: Wed, 5 Jun 2024 21:01:52 -0400 Subject: [PATCH] 066-071 completed --- exercises/066_comptime.zig | 4 ++-- exercises/067_comptime2.zig | 2 +- exercises/068_comptime3.zig | 5 +++-- exercises/069_comptime4.zig | 4 ++-- exercises/070_comptime5.zig | 4 ++-- exercises/071_comptime6.zig | 2 +- 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/exercises/066_comptime.zig b/exercises/066_comptime.zig index 9b07a2d..124b472 100644 --- a/exercises/066_comptime.zig +++ b/exercises/066_comptime.zig @@ -62,8 +62,8 @@ pub fn main() void { // types with specific sizes. The comptime numbers will be // coerced (if they'll fit!) into your chosen runtime types. // For this it is necessary to specify a size, e.g. 32 bit. - var var_int = 12345; - var var_float = 987.654; + var var_int: u32 = 12345; + var var_float: f32 = 987.654; // We can change what is stored at the areas set aside for // "var_int" and "var_float" in the running compiled program. diff --git a/exercises/067_comptime2.zig b/exercises/067_comptime2.zig index 6b9b14a..b7cc998 100644 --- a/exercises/067_comptime2.zig +++ b/exercises/067_comptime2.zig @@ -35,7 +35,7 @@ pub fn main() void { // In this contrived example, we've decided to allocate some // arrays using a variable count! But something's missing... // - var count = 0; + comptime var count = 0; count += 1; const a1: [count]u8 = .{'A'} ** count; diff --git a/exercises/068_comptime3.zig b/exercises/068_comptime3.zig index 15b8997..c1348db 100644 --- a/exercises/068_comptime3.zig +++ b/exercises/068_comptime3.zig @@ -43,7 +43,8 @@ const Schooner = struct { // // Please change this so that it sets a 0 scale to 1 // instead. - if (my_scale == 0) @compileError("Scale 1:0 is not valid!"); + //if (my_scale == 0) @compileError("Scale 1:0 is not valid!"); + if (my_scale == 0) my_scale = 1; self.scale = my_scale; self.hull_length /= my_scale; @@ -69,7 +70,7 @@ pub fn main() void { // Hey, we can't just pass this runtime variable as an // argument to the scaleMe() method. What would let us do // that? - var scale: u32 = undefined; + comptime var scale: u32 = undefined; scale = 32; // 1:32 scale diff --git a/exercises/069_comptime4.zig b/exercises/069_comptime4.zig index e090bb3..0263de0 100644 --- a/exercises/069_comptime4.zig +++ b/exercises/069_comptime4.zig @@ -42,8 +42,8 @@ pub fn main() void { // 2) Sets the size of the array of type T (which is the // sequence we're creating and returning). // -fn makeSequence(comptime T: type, ??? size: usize) [???]T { - var sequence: [???]T = undefined; +fn makeSequence(comptime T: type, comptime size: usize) [size]T { + var sequence: [size]T = undefined; var i: usize = 0; while (i < size) : (i += 1) { diff --git a/exercises/070_comptime5.zig b/exercises/070_comptime5.zig index afd4ae8..c6bc4bb 100644 --- a/exercises/070_comptime5.zig +++ b/exercises/070_comptime5.zig @@ -123,8 +123,8 @@ fn isADuck(possible_duck: anytype) bool { // Please make sure MyType has both waddle() and quack() // methods: const MyType = @TypeOf(possible_duck); - const walks_like_duck = ???; - const quacks_like_duck = ???; + const walks_like_duck = @hasDecl(MyType, "waddle"); + const quacks_like_duck = @hasDecl(MyType, "quack"); const is_duck = walks_like_duck and quacks_like_duck; diff --git a/exercises/071_comptime6.zig b/exercises/071_comptime6.zig index 7723291..d467184 100644 --- a/exercises/071_comptime6.zig +++ b/exercises/071_comptime6.zig @@ -40,7 +40,7 @@ pub fn main() void { const fields = @typeInfo(Narcissus).Struct.fields; - ??? { + inline for (fields) |field| { if (field.type != void) { print(" {s}", .{field.name}); }