diff options
| -rw-r--r-- | CONTRIBUTING.md | 4 | ||||
| -rw-r--r-- | exercises/043_pointers5.zig | 2 | ||||
| -rw-r--r-- | exercises/047_methods.zig | 18 | ||||
| -rw-r--r-- | exercises/107_threading.zig | 2 | ||||
| -rw-r--r-- | exercises/108_threading2.zig | 2 | ||||
| -rw-r--r-- | exercises/113_quiz9.zig | 2 | ||||
| -rw-r--r-- | exercises/114_packed.zig | 4 | ||||
| -rw-r--r-- | exercises/115_packed2.zig | 6 | ||||
| -rw-r--r-- | patches/patches/047_methods.patch | 6 |
9 files changed, 32 insertions, 14 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3d162c2..56446b0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,11 +8,11 @@ of Ziglings Maintenance! Ziglings is intended for programmers of all experience levels. No specific language knowledge is expected. Anyone who can install -the current Zig snapshot, setup a copy of Ziglings, and knows +the current Zig snapshot, set up a copy of Ziglings, and knows common language building blocks (if/then/else, loops, and functions) is ready for Ziglings. -Zigling's excercises are self-contained. If you can't solve +Zigling's exercises are self-contained. If you can't solve an exercise from the information you've gleaned so far from Ziglings, then the exercise probably needs some additional work. Please file an issue! diff --git a/exercises/043_pointers5.zig b/exercises/043_pointers5.zig index 9e2fa6f..3117639 100644 --- a/exercises/043_pointers5.zig +++ b/exercises/043_pointers5.zig @@ -1,6 +1,6 @@ // // As with integers, you can pass a pointer to a struct when you -// will wish to modify that struct. Pointers are also useful when +// wish to modify that struct. Pointers are also useful when // you need to store a reference to a struct (a "link" to it). // // const Vertex = struct{ x: u32, y: u32, z: u32 }; diff --git a/exercises/047_methods.zig b/exercises/047_methods.zig index 3221ca2..3e88719 100644 --- a/exercises/047_methods.zig +++ b/exercises/047_methods.zig @@ -37,6 +37,24 @@ // self, others use a lowercase version of the type name, but feel // free to use whatever is most appropriate. // +// "But hold on," you say, eyeing a() and b() suspiciously, "why +// does one take 'self' and another take '*self'?" Sharp eye! +// +// It all comes down to a single question: does the function need +// to CHANGE the struct? +// +// * Needs to change it? Take a pointer (*Bar). Without it you'd +// be scribbling on a COPY, and your changes would evaporate the +// instant the function returns. Poof. +// * Only reads it? Plain Bar is just fine. +// (For a big, bulky struct you might still write *const Bar to +// avoid copying it around, but for small ones a copy is cheap.) +// +// You'll see this below: zap() takes 'self: HeatRay' by value +// because it only reads the ray's damage, but it takes the alien +// as '*Alien' because zapping is supposed to HURT - and that means +// changing the alien's health for real, not on a throwaway copy. +// // Okay, you're armed. // // Now, please zap the alien structs until they're all gone or diff --git a/exercises/107_threading.zig b/exercises/107_threading.zig index 3c3fa21..2b7d4c0 100644 --- a/exercises/107_threading.zig +++ b/exercises/107_threading.zig @@ -1,5 +1,5 @@ // -// In Exercises 84-91, we learned about Zig's Io interface for +// In Exercises 85-94 and quiz 95, we learned about Zig's Io interface for // concurrent execution: io.async(), Group, Select, and Futures. // Under the hood, the Threaded backend manages a pool of real // OS threads for you - including scheduling, cancellation, and diff --git a/exercises/108_threading2.zig b/exercises/108_threading2.zig index bbf8d78..e1b35ac 100644 --- a/exercises/108_threading2.zig +++ b/exercises/108_threading2.zig @@ -46,7 +46,7 @@ // 1,000,000,000 partial values. And for each additional digit we have to // add a zero. // Even fast computers - and I mean really fast computers - get a bit warmer -// on the CPU when it comes to really many digits. But the 8 digits are +// on the CPU when it comes to a large number of digits. But 8 digits are // enough for us for now, because we want to understand the principle and // nothing more, right? // diff --git a/exercises/113_quiz9.zig b/exercises/113_quiz9.zig index 8f5cb61..8d1da9c 100644 --- a/exercises/113_quiz9.zig +++ b/exercises/113_quiz9.zig @@ -14,7 +14,7 @@ // // A common activity in microcontroller programming is setting and clearing // bits on input and output pins. This lets you control LEDs, sensors, motors -// and more! In a previous exercise (097_bit_manipulation.zig) you learned how +// and more! In a previous exercise (100_bit_manipulation.zig) you learned how // to swap two bytes using the ^ (XOR - exclusive or) operator. This quiz will // test your knowledge of bit manipulation in Zig while giving you a taste of // what it's like to control registers in a real microcontroller. Included at diff --git a/exercises/114_packed.zig b/exercises/114_packed.zig index 933ae0a..74ec7a1 100644 --- a/exercises/114_packed.zig +++ b/exercises/114_packed.zig @@ -1,6 +1,6 @@ // // We've already learned plenty about bit manipulation using bitwise operations -// in exercises 097 and 098 and in quiz 110. The techniques we already know work +// in exercises 100 and 101 and in quiz 113. The techniques we already know work // just fine, but creating masks and shifting individual bits around can become // quite tedious and unwieldy pretty quickly. // What if there was a better, a more convenient way to control individual bits? @@ -78,7 +78,7 @@ const FLG = packed struct(u8) { content_checksum: bool, content_size: bool, block_checksum: bool, - block_indepencence: bool, + block_independence: bool, version: u2, }; diff --git a/exercises/115_packed2.zig b/exercises/115_packed2.zig index 2b6b558..2a772d7 100644 --- a/exercises/115_packed2.zig +++ b/exercises/115_packed2.zig @@ -1,5 +1,5 @@ // -// We've already learned about switch statements in exercises 030, 031 and 108. +// We've already learned about switch statements in exercises 030, 031 and 111. // They also work with packed containers: const S = packed struct(u2) { @@ -51,11 +51,11 @@ comptime { // // Try to make the float below negative: -/// IEEE 754 half precision float +// IEEE 754 binary16 floating-point format const Float = packed union(u16) { value: f16, bits: packed struct(u16) { - mantissa: u10, + significand: u10, exponent: u5, sign: u1, }, diff --git a/patches/patches/047_methods.patch b/patches/patches/047_methods.patch index a7e8a26..4755ecb 100644 --- a/patches/patches/047_methods.patch +++ b/patches/patches/047_methods.patch @@ -1,6 +1,6 @@ ---- exercises/047_methods.zig 2023-10-03 22:15:22.122241138 +0200 -+++ answers/047_methods.zig 2023-10-05 20:04:07.056100214 +0200 -@@ -88,7 +88,7 @@ +--- exercises/047_methods.zig 2026-06-21 16:11:59.110876971 +0200 ++++ answers/047_methods.zig 2026-06-21 16:13:07.066363558 +0200 +@@ -106,7 +106,7 @@ for (&aliens) |*alien| { // *** Zap the alien with the heat ray here! *** |
