From f33f0f47b7ec10da1e2ba7fd641cf2b0d873b500 Mon Sep 17 00:00:00 2001 From: Andrew Barchuk Date: Sat, 5 Oct 2024 17:36:54 +0200 Subject: [PATCH] Clarify the multidimensional array example Use a rectangular matrix instead of a square one to distinguish rows and columns more clearly. Extend the example with row access. --- doc/langref/test_multidimensional_arrays.zig | 22 ++++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/doc/langref/test_multidimensional_arrays.zig b/doc/langref/test_multidimensional_arrays.zig index 0a3535ca6e78..c88e8cb16a52 100644 --- a/doc/langref/test_multidimensional_arrays.zig +++ b/doc/langref/test_multidimensional_arrays.zig @@ -1,18 +1,22 @@ const std = @import("std"); const expect = std.testing.expect; +const expectEqual = std.testing.expectEqual; -const mat4x4 = [4][4]f32{ - [_]f32{ 1.0, 0.0, 0.0, 0.0 }, - [_]f32{ 0.0, 1.0, 0.0, 1.0 }, - [_]f32{ 0.0, 0.0, 1.0, 0.0 }, - [_]f32{ 0.0, 0.0, 0.0, 1.0 }, +const mat4x5 = [4][5]f32{ + [_]f32{ 1.0, 0.0, 0.0, 0.0, 0.0 }, + [_]f32{ 0.0, 1.0, 0.0, 1.0, 0.0 }, + [_]f32{ 0.0, 0.0, 1.0, 0.0, 0.0 }, + [_]f32{ 0.0, 0.0, 0.0, 1.0, 9.9 }, }; test "multidimensional arrays" { + // mat4x5 itself is a one-dimensional array of arrays. + try expectEqual(mat4x5[1], [_]f32{ 0.0, 1.0, 0.0, 1.0, 0.0 }); + // Access the 2D array by indexing the outer array, and then the inner array. - try expect(mat4x4[1][1] == 1.0); + try expect(mat4x5[3][4] == 9.9); // Here we iterate with for loops. - for (mat4x4, 0..) |row, row_index| { + for (mat4x5, 0..) |row, row_index| { for (row, 0..) |cell, column_index| { if (row_index == column_index) { try expect(cell == 1.0); @@ -20,8 +24,8 @@ test "multidimensional arrays" { } } - // initialize a multidimensional array to zeros - const all_zero: [4][4]f32 = .{.{0} ** 4} ** 4; + // Initialize a multidimensional array to zeros. + const all_zero: [4][5]f32 = .{.{0} ** 5} ** 4; try expect(all_zero[0][0] == 0); }