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