summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorChris Boesch <chrboesch@noreply.codeberg.org>2023-02-21 21:43:40 +0100
committerChris Boesch <chrboesch@noreply.codeberg.org>2023-02-21 21:43:40 +0100
commite7326dc5f92dd8a2dc8bd7cafb5b3eaaf55ce99b (patch)
tree62e312ad4ea0cb66d1c9fbd6e259f21ee38dec60
parentf9b3d5082435dff928647c3e42d0a85ac1159aee (diff)
dev.1711 - switched to multi-object-for-loops
-rw-r--r--README.md5
-rw-r--r--build.zig2
-rw-r--r--exercises/016_for2.zig11
-rw-r--r--exercises/038_structs2.zig2
-rw-r--r--exercises/047_methods.zig2
-rw-r--r--exercises/058_quiz7.zig2
-rw-r--r--exercises/063_labels.zig2
-rw-r--r--exercises/075_quiz8.zig2
-rw-r--r--patches/patches/016_for2.patch6
9 files changed, 18 insertions, 16 deletions
diff --git a/README.md b/README.md
index 65fae89..bd6aba7 100644
--- a/README.md
+++ b/README.md
@@ -42,7 +42,7 @@ Verify the installation and build number of `zig` like so:
```bash
$ zig version
-0.11.0-dev.1650+xxxxxxxxx
+0.11.0-dev.11711+xxxxxxxxx
```
Clone this repository with Git:
@@ -82,7 +82,8 @@ about input:
### Version Changes
-Version-0.11.0-dev.1650+xxxxxxxxx
+Version-0.11.0-dev.11711+xxxxxxxxx
+* *2023-02-21* zig 0.11.0-dev.1711 - changes in `for loops` - new: Multi Object For Loops + Struct-of-Arrays
* *2023-02-12* zig 0.11.0-dev.1638 - changes in `std.Build` cache_root now returns a directory struct
* *2023-02-04* zig 0.11.0-dev.1568 - changes in `std.Build` (combine `std.build` and `std.build.Builder` into `std.Build`)
* *2023-01-14* zig 0.11.0-dev.1302 - changes in `@addWithOverflow` (now returns a tuple) and `@typeInfo`; temporary disabled async functionality
diff --git a/build.zig b/build.zig
index bca0bdf..b676eee 100644
--- a/build.zig
+++ b/build.zig
@@ -8,7 +8,7 @@ const print = std.debug.print;
// When changing this version, be sure to also update README.md in two places:
// 1) Getting Started
// 2) Version Changes
-const needed_version = std.SemanticVersion.parse("0.11.0-dev.1650") catch unreachable;
+const needed_version = std.SemanticVersion.parse("0.11.0-dev.1711") catch unreachable;
const Exercise = struct {
/// main_file must have the format key_name.zig.
diff --git a/exercises/016_for2.zig b/exercises/016_for2.zig
index 1d4496a..4a8d09c 100644
--- a/exercises/016_for2.zig
+++ b/exercises/016_for2.zig
@@ -1,8 +1,9 @@
//
-// For loops also let you store the "index" of the iteration - a
-// number starting with 0 that counts up with each iteration:
+// For loops also let you use the "index" of the iteration, a number
+// that counts up with each iteration. To access the index of iteration,
+// specify a second condition as well as a second capture value.
//
-// for (items) |item, index| {
+// for (items, 0..) |item, index| {
//
// // Do something with item and index
//
@@ -23,8 +24,8 @@ pub fn main() void {
// Now we'll convert the binary bits to a number value by adding
// the value of the place as a power of two for each bit.
//
- // See if you can figure out the missing piece:
- for (bits) |bit, ???| {
+ // See if you can figure out the missing pieces:
+ for (bits, ???) |bit, ???| {
// Note that we convert the usize i to a u32 with
// @intCast(), a builtin function just like @import().
// We'll learn about these properly in a later exercise.
diff --git a/exercises/038_structs2.zig b/exercises/038_structs2.zig
index 4f2ce48..af7eb1f 100644
--- a/exercises/038_structs2.zig
+++ b/exercises/038_structs2.zig
@@ -44,7 +44,7 @@ pub fn main() void {
// it do and why?
// Printing all RPG characters in a loop:
- for (chars) |c, num| {
+ for (chars, 0..) |c, num| {
std.debug.print("Character {} - G:{} H:{} XP:{}\n", .{
num + 1, c.gold, c.health, c.experience,
});
diff --git a/exercises/047_methods.zig b/exercises/047_methods.zig
index 0e7bfa8..442d129 100644
--- a/exercises/047_methods.zig
+++ b/exercises/047_methods.zig
@@ -86,7 +86,7 @@ pub fn main() void {
aliens_alive = 0;
// Loop through every alien by reference (* makes a pointer capture value)
- for (aliens) |*alien| {
+ for (&aliens) |*alien| {
// *** Zap the alien with the heat ray here! ***
???.zap(???);
diff --git a/exercises/058_quiz7.zig b/exercises/058_quiz7.zig
index 0d5bcaa..3069710 100644
--- a/exercises/058_quiz7.zig
+++ b/exercises/058_quiz7.zig
@@ -239,7 +239,7 @@ const HermitsNotebook = struct {
// We'll often want to find an entry by Place. If one is not
// found, we return null.
fn getEntry(self: *HermitsNotebook, place: *const Place) ?*NotebookEntry {
- for (self.entries) |*entry, i| {
+ for (&self.entries, 0..) |*entry, i| {
if (i >= self.end_of_entries) break;
// Here's where the hermit got stuck. We need to return
diff --git a/exercises/063_labels.zig b/exercises/063_labels.zig
index f82ea6d..79adfaa 100644
--- a/exercises/063_labels.zig
+++ b/exercises/063_labels.zig
@@ -106,7 +106,7 @@ pub fn main() void {
const meal = food_loop: for (menu) |food| {
// Now look at each required ingredient for the Food...
- for (food.requires) |required, required_ingredient| {
+ for (food.requires, 0..) |required, required_ingredient| {
// This ingredient isn't required, so skip it.
if (!required) continue;
diff --git a/exercises/075_quiz8.zig b/exercises/075_quiz8.zig
index e05830e..c2dbc1a 100644
--- a/exercises/075_quiz8.zig
+++ b/exercises/075_quiz8.zig
@@ -102,7 +102,7 @@ const HermitsNotebook = struct {
end_of_entries: u8 = 0,
fn getEntry(self: *HermitsNotebook, place: *const Place) ?*NotebookEntry {
- for (self.entries) |*entry, i| {
+ for (&self.entries, 0..) |*entry, i| {
if (i >= self.end_of_entries) break;
if (place == entry.*.?.place) return &entry.*.?;
}
diff --git a/patches/patches/016_for2.patch b/patches/patches/016_for2.patch
index 5aba37f..bdbfc7d 100644
--- a/patches/patches/016_for2.patch
+++ b/patches/patches/016_for2.patch
@@ -1,4 +1,4 @@
-27c27
-< for (bits) |bit, ???| {
+28c28
+< for (bits, ???) |bit, ???| {
---
-> for (bits) |bit, i| {
+> for (bits, 0..) |bit, i| {