From 86dc5ce250b77caf76ff5004de07a0cef80f10bf Mon Sep 17 00:00:00 2001 From: twil3akine Date: Sun, 10 May 2026 01:34:16 +0900 Subject: [PATCH] langref: clarify for else example --- doc/langref/test_for.zig | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/doc/langref/test_for.zig b/doc/langref/test_for.zig index 24c6fe713232c4db3bf63088db184595e87b7d23..ee08341956905c51d195598699c957be00616eaf 100644 --- a/doc/langref/test_for.zig +++ b/doc/langref/test_for.zig @@ -75,20 +75,22 @@ test "for reference" { test "for else" { // For allows an else attached to it, the same as a while loop. - const items = [_]?i32{ 3, 4, null, 5 }; + // The else branch is evaluated when the loop completes without a break. + const items = [_]i32{ 3, 4, 5 }; - // For loops can also be used as expressions. - // Similar to while loops, when you break from a for loop, the else branch is not evaluated. - var sum: i32 = 0; const result = for (items) |value| { - if (value != null) { - sum += value.?; - } - } else blk: { - try expectEqual(12, sum); - break :blk sum; - }; - try expectEqual(12, result); + if (value > 10) break value; + } else 0; + + try expectEqual(0, result); + + const more_items = [_]i32{ 3, 4, 11, 5 }; + + const another_result = for (more_items) |value| { + if (value > 10) break value; + } else 0; + + try expectEqual(11, another_result); } // test -- 2.54.0