Repeat conditional statements with loops
for ... in ... do ... end | for ... from ... to ... do ... end | while ... do ... end
Loops allow you to automatically execute a code block multiple numbers of times in succession. For example, apply the statements of a code block to each element of an array.
One of the most important loops you need to know about—it'll be very helpful when writing your scripts.
After
for
, select the corresponding variable name for the item in the list that you want to change.Line 1: Not yet part of the loop but useful because it's easier to read: the records are stored in a variable.
Line 2: The loop starts with
for
[it follows a label for a single element from the list to be traversed] in
[it follows the list] do
.Line 3: statement of what should be done.
Line 4:
end
terminates the loop (termination).You'd like to assign all customers who have status
2
a new one, status 1
. First, select the customers with status 2
in the Customers (new) table. Then assign status 1
to each of these customers (customer
).1
let customers := select 'Customers (new)' where Status = 2;
2
for customer in customers do
3
customer.Status := 1;
4
end
Result: All customers who have status
2
are assigned status 1
.This loop is especially suitable when working with numeric values since instead of an array, a sequence of numbers will be iterated.
On each pass,
1
is added to the loop variable (increment = 1
). It starts with the value after from
(inclusive) and ends before the value after to
(exclusive).1
let array := [10, 20, 30, 20, 10];
2
let result := 0;
3
for i from 0 to 3 do
4
result := result + item(array, i)
5
end;
6
result
Result:
60
The values of the array with the indices
0
, 1
and 2
are added. 10
+ 20
+ 30
= 60
.Change the height of the increment with
step
.1
let array := [10, 20, 30, 20, 10];
2
let result := 0;
3
for i from 0 to 5 step 2 do
4
result := result + item(array, i)
5
end;
6
result
Result:
50
The values of the array with the indices
0
, 2
and 4
are added. 10
+ 30
+ 10
= 50
.for i in range(0, 10)
is the equivalent of for i from 0 to 10
.This loop is executed until the condition after
while
is no longer true. Declare a counter variable, for example, which is incremented on each loop pass until the condition is no longer true. The condition is correct (
true
) as long as the variable is less than a specified value.If the condition is not set to
false
on any of the passes, there's a risk of ending up in an infinite loop, causing Ninox to explode. 😉
1
let i := 0;
2
let result := "";
3
while i < 10 do
4
result := result + " " + i;
5
i := i + 1
6
end;
7
result
Result:
0 1 2 3 4 5 6 7 8 9
In most cases,
for ... in ... do ... end
is the preferred choice.Last modified 7mo ago