/** Loops/Nested in Neko Tectonics: nekoc loops-nested.neko neko loops-nested.neko */ var random = $loader.loadprim("std@random_new", 0)(); var random_int = $loader.loadprim("std@random_int", 2); var values = $amake(10); var row = 0; var col = 0; while row < 10 { values[row] = $amake(10); col = 0; while col < 10 { values[row][col] = random_int(random, 20) + 1; col += 1; } row += 1; } /* Look for a 20 */ /* To break out of nested loops, (without using labels and $goto), Neko needs the value of the inner loop(s). The break statement sets the return value of a loop expression. Without a break, the value of a loop expression is unspecified. */ var inner; row = 0; while row < 10 { col = 0; inner = while col < 10 { $print("values[", row, "][", col, "] = ", values[row][col], "\n"); if values[row][col] == 20 break true; col += 1; } if $istrue(inner) break; row += 1; }