Управляющие конструкции

Скриптовый движок поддерживает следующие структуры управления: if, while, repeat and for.

If

Оператор “if” проверяет заданное условие и если условие истинно, то выполняются действия, следующие за ключевым словом “then”. Оператор “if” должен завершатся ключевым словом “end”. Основной синтаксис:

if условие then
       выполнить указанное здесь
end

Для примера:

x = 50;
if x > 10 then
    Dialog.Message("result", "x is greater than 10");
end

y = 3;
if ((35 * y) < 100) then
    Dialog.Message("", "y times 35 is less than 100");
end

В приведённом выше скрипте, появится только первое диалоговое окно с сообщением, потому что второе условие - ложное... 35 помноженное на 3 равно 105, а 105 больше чем 100.

x = 5;
if x > 10 then
    Dialog.Message("", "x is greater than 10");
else
    Dialog.Message("", "x is less than or equal to 10");
end

В примере отобразилось второе диалоговое окно, т.к. 5 меньше 10.

Вы можете также использовать “elseif”, чтобы добавить другие варианты условия оператору “if”:

x = 5;
if x == 10 then
    Dialog.Message("", "x is exactly 10");
elseif x == 11 then
    Dialog.Message("", "x is exactly 11");
elseif x == 12 then
    Dialog.Message("", "x is exactly 12");
else
    Dialog.Message("", "x is not 10, 11 or 12");
end

Пример выше показал последнее диалоговое окно, потому что x не равен 10, 11 или 12.

While

Оператор “while” используется, чтобы выполнять некий "блок" скрипта до тех пор, пока соблюдается условие. Оператор “while” должен завершатся ключевым словом “end”. Основной синтаксис:

while условие do
     выполнить указанное здесь
end

Вот, как это работает:

Если условие верно, действия между "while" и соответствующим "end" будут выполнены. Достигнув "end", условие вновь будет проверено, и если оно всё ещё верно, действия между "while" и "end" будут выполнены снова. Действия продолжат циклично выполняться, пока условие будет истинным.

Для примера:

a = 1;
while a < 10 do
    a = a + 1;
end

В предыдущем примере, строка “a = a + 1;” была бы выполнена 9 раз.

Вы можете прервать выполнение цикла в любое время используя ключевое слово “break”. Для примера:

count = 1;
while count < 100 do
    count = count + 1;
    if count == 50 then
        break;
    end
end

Не смотря на то, что оператор "while" готов считать от 1 до 99, оператор "if" завершит цикл, как только count достигнет 50.

Repeat

Оператор "repeat" похож на оператор "while", с одним отличием - условие проверяется не в начале, а в конце цикла. Основной синтаксис:

repeat
     выполнить указанное здесь
until условие

Для примера:

i = 1;
repeat
    i = i + 1;
until i > 10

This is similar to one of the while loops above, but this time, the loop is performed 10 times. The “i = i + 1;” part gets executed before the condition determines that a is now larger than 10.

You can break out of a repeat loop at any time using the “break” keyword. Для примера:

count = 1;
repeat
    count = count + 1;
    if count == 50 then
        break;
    end
until count > 100

Once again, this would exit from the loop as soon as count was equal to 50.

For

The for statement is used to repeat a block of script a specific number of times. The basic syntax is:

for variable = start,end,step do
     do something here
end

The variable can be named anything you want. It is used to “count” the number of trips through the for loop. It begins at the start value you specify, and then changes by the amount in step after each trip through the loop. In other words, the step gets added to the value in the variable after the lines between the for and end are performed. If the result is smaller than or equal to the end value, the loop continues from the beginning.

Для примера:

-- This loop counts from 1 to 10:
for x = 1, 10 do
    Dialog.Message("Number", x);
end

The above example displays 10 dialog messages in a row, counting from 1 to 10.
Note that the step is optional—if you don’t provide a value for the step, it defaults to 1.

Here’s an example that uses a step of “-1” to make the for loop count backwards:

-- This loop counts from 10 down to 1:
for x = 10, 1, -1 do
    Dialog.Message("Number", x);
end

That example would display 10 dialog messages in a row, counting back from 10 and going all the way down to 1.

You can break out of a for loop at any time using the “break” keyword. Для примера:

for i = 1, 100 do
    if count == 50 then
        break;
    end
end

Once again, this would exit from the loop as soon as count was equal to 50.

There is also a variation on the for loop that operates on tables. For more information on that, see Using For to Enumerate Tables.

Сайт управляется системой uCoz