Merge pull request #191 from chrboesch/dev_1711

dev.1711 - switched to multi-object-for-loops
This commit is contained in:
Chris Boesch 2023-02-21 21:54:09 +01:00 committed by GitHub
commit c88777ded9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 18 additions and 16 deletions

View file

@ -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.

View file

@ -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,
});

View file

@ -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(???);

View file

@ -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

View file

@ -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;

View file

@ -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.*.?;
}