if (condition) {} else {}
switch(expression) { case label1: statements1; break; case label2: statements2; break; [default: statements_default; break;] }
Цикл с начальным и конечным значениями.
for (<var> in <startIndex> .. <endIndex>) {<op>}
Пример:
for (i in 1..10) { println(i); }
Цикл по массиву значений <view> или <query>
for (<var> in <array-var>) { println(<var>); }
где,
<array-var> - выражение возвращающее массив AppXMLArray
<var> - имя локальной переменной с текущим элементом массива
Внутри цикла, все переменные цикла имеют приоритет над переменными за пределами цикла или id
Поддержка синтаксиса цикла
for([start_condition]; [end_condition]; [expr]) statement;
Поддержка синтаксиса цикла
for(var in exp1..expr2) для случая expr1>expr2 (обратный цикл)
Пример 1:
var i=0; for(item in view_shop) { println((i++) + '. ' + 'Shop name' + item[1]); // выводим пронумерованный список магазинов из двумерного массива // или println((i++) + '. ' + 'Shop name' + item); // выводим пронумерованный список магазинов из одномерного массива }
Пример 2 (с заглядыванием вперед):
var i=0; for (a in array) { if (a.index < a.length) { print(array[(i++) + 1]) // печатаем все элементы, кроме 0-го } }
Цикл с условием:
while(condition) {...};
Цикл с постусловием:
do {...} while(condition);
Циклы: ключевые слова - last (выход), next (переход к следующей итерации).
Кроме этого, поддерживается указатель this, указывающий на объект, сгенерировавшее событие.
Для вызова Java-метода требуется использовать префикс «java:», например,
java:callMyMethod("Hello", true, 1);
Помните, что java-метод должен иметь ожидаемых описанных параметров на один параметр больше (первый, Object).
Указанные выше выражения и команды можно записывать как в самих атрибутах, так и во вложенных тэгах с именами, равными имени соответствущего событийного атрибута (что предпочтительнее в случае большого объекма кода).
Пример:
<onAction> query.sql="select * from t1"; print(query[][1,3]); </onAction>