0

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.

for ... in ... do ... end

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. 

The for loop is structured as follows:

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

Example

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

let customers := select 'Customers (new)' where Status = 2;
for customer in customers do
    customer.Status := 1;
end

Result: All customers who have status 2 are assigned status 1.

for ... from ... to ... do ... end

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

Example

let array := [10, 20, 30, 20, 10];
let result := 0;
for i from 0 to 3 do
result := result + item(array, i)
end;
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.

Example

let array := [10, 20, 30, 20, 10];
let result := 0;
for i from 0 to 5 step 2 do
result := result + item(array, i)
end;
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.

while ... do ... end

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.

Example

let i := 0;
let result := "";
while i < 10 do
    result := result + " " + i;
    i := i + 1
end;
result

Result: 0 1 2 3 4 5 6 7 8 9

ℹ️ In most cases, for ... in ... do ... end is the preferred choice.

Reply

null