AppScript является языком с динамической типизацией, поддерживает 10 типов данных:
Булевый (логический) тип может иметь два значения: true или false.
Допустимые операции (между операндами и операцией рекомендуется ставить пробелы):
or (||) | Логическое ИЛИ | println(true or false); |
and (&&) | Логическое И | println(true and false); |
not (!) | Отрицание | println( not(true or false) ); |
~ | Конкатенация операндов как строковых | println(true ~ false); |
== | Сравнение | println(true == false); |
<> ( != ) | Сравнение | println(true != false); |
< | Cравнение | println(true < false); |
> | Cравнение | println(true > false); |
Примеры:
<AppXML>
var a = true;
var b = false;
println("OR is " + (a or b));
println("AND is " + (a and b));
</AppXML>
Целое число может сколь угодно большим знаковым числом.
Допустимые операции (между операндами и операцией рекомендуется ставить пробелы):
+ | сложение | println(5 + 4); |
- | вычитание ( | println(7 - 3); |
* | умножение | println(4 * 5); |
/ | деление | println(8 / 4); |
^ | возведение в степень | println(5 ^ 2); |
% | деление по модулю | println(5 % 2); |
~ | конкатенация операндов как строковых | println(5 ~ 7); |
== | сравнение | println(5 == 7); |
<> ( != ) | сравнение | println(5 != 7); |
< | сравнение | println(5 < 7); |
> | сравнение | println(5 > 7); |
Примеры:
<AppXML>
var a = 1;
var b = 123456789;
var c = 124098712358079634897623487612349721340345908734589763487362872638349587345796349782634987;
println("Sum is " + (a + b + c));
</AppXML>
Вещественное число может сколь угодно большим знаковым числом.
Допустимые операции (между операндами и операцией рекомендуется ставить пробелы):
+ | сложение | println(5.1 + 4.3); |
- | вычитание ( | println(7.1 - 3.3); |
* | умножение | println(4.1 * 5.3); |
/ | деление | println(8.1 / 4.3); |
^ | возведение в степень | println(5.1 ^ 2.3); |
% | деление по модулю | println(5.1 % 2.3); |
~ | конкатенация операндов как строковых | println(5.1 ~ 7.3); |
== | сравнение | println(5.1 == 7.3); |
<> ( != ) | cравнение | println(5.1 != 7.3); |
< | сравнение | println(5.1 < 7.3); |
> | сравнение | println(5.1 > 7.3); |
Примеры:
<AppXML>
var a = 1.3;
var b = 123456789.4;
var c = 124098712358079634897623487612349721340345908734589763487362872638349587345796349782634987.7;
println("Sum is " + (a + b + c));
</AppXML>
Строка задается последовательностью символов, заключенных в двойные или одинарные кавычки. Двойные кавычки предпочтительнее.
Если требуется вставить внутрь строки кавычку, она должны быть экранирована обратным слэшем '\'.
Поддерживаются спецсимволы:
\n | новая строка |
\t | горизонтальная табуляция |
Допустимые операции (между операндами и операцией рекомендуется ставить пробелы):
+ | сложение | println(«Hello, » + «World!»); |
* | дублирование строки n раз | println(«Hello!» * 5); |
~ | конкатенация операндов как строковых | println(«Hello, » + «World!»); |
== | сравнение | println(«Hello, » == «World!»); |
<> ( != ) | cравнение | println(«Hello, » != «World!»); |
< | сравнение | println(«Hello, » < «World!»); |
> | сравнение | println(«Hello, » > «World!»); |
Примеры:
<AppXML> var a = "Hello, \t\tWorld!"; var b = "Hello, \n\"W\"orld!"; var c = 'Hello'; println(a); println(b); println(c); </AppXML>
Значение даты записывается в переменную через функцию stod().
Формат даты описывается, используя следующие соглашения:
| d | день |
| M | месяц |
| y | год |
Например, dd.MM.yyyy.
Допустимые операции (между операндами и операцией рекомендуется ставить пробелы):
+ | сложение c числом | println(stod(«23.03.09») + 2); |
- | вычитание даты из даты. Получаем кол-во дней. ( | println(stod(«23.03.09»)-stod(«01.01.09»)); |
~ | конкатенация операндов как строковых | println(stod(«23.03.09»)~stod(«01.01.09»)); |
== | сравнение | println(stod(«23.03.09»)==stod(«01.01.09»)); |
<> ( != ) | сравнение | println(stod(«23.03.09»)!=stod(«01.01.09»)); |
< | сравнение | println(stod(«23.03.09»)<stod(«01.01.09»)); |
> | сравнение | println(stod(«23.03.09»)>stod(«01.01.09»)); |
Примеры:
<AppXML>
var a = stod("23.03.09"); // используется формат даты, записанный в appxml.date-format атрибуте
var b = stod("03.23.2009", "MM.dd.yyyy"); // указывается фактический формат, действует только на данную переменную.
var c = stod("24.03.09"); // опять испольуется формат из appxml.date-format
appXMLParameters()["date-format"] = "MM.dd.yyyy"; // меняем "на лету" формат даты
var d = stod("03.25.09"); // теперь тоже используется формат из appxml.date-format, но уже измененный
var e = stod("25.03.09", "dd.MM.yy"); // а теперь нужно указать что имеем ввиду
println("a=" + a + ", b=" + b + ", c=" + c + ", d=" + d + ", e=" + e);
println(d + 3);
</AppXML>
Размерность массива может быть произвольной.
Элементы массива могут быть разнородными.
Допустимые операции (между операндами и операцией рекомендуется ставить пробелы):
+ | сложение | println([1, 2] + [3, 4]); |
* | умножение на число | println([1, 2] * 3); |
~ | конкатенация операндов как строковых | println([1, 2] ~ [3, 4]); |
[][{n}] | экспорт колонок | println([ [1, 2], [3, 4] ] [ ] [1]); |
== | сравнение содержимого | println([1, 2] == [1, 2]); |
<> ( != ) | сравнение содержимого | println([1, 2] != [1, 2]); |
< | сравнение длин | println(5.1 < 7.3); |
> | сравнение длин | println(5.1 > 7.3); |
Примеры:
<AppXML> var a = []; // пустой массив нулевой длины var a = array(); // тоже самое a[0] = 1; // теперь длина массива = 1 a[1] = "Hi";// теперь длина массива = 2 var b = [3, 5, "Много"]; var c = [3, 5, 7, ["A", "B, "F"], 9]; var a = [[1, 2], [3, 4], [5, 6]]; var b = a[][1]; // берем только вторую колонку </AppXML>
Ассоциативный массив (хэш).
Допустимые операции (между операндами и операцией рекомендуется ставить пробелы):
+ | сложение | println([1, 2] + [3, 4]); |
~ | конкатенация операндов как строковых | println([1, 2] ~ [3, 4]); |
== | сравнение содержимого | println([1, 2] == [1, 2]); |
<> ( != ) | сравнение содержимого | println([1, 2] != [1, 2]); |
< | сравнение длин | println(5.1 < 7.3); |
> | сравнение длин | println(5.1 > 7.3); |
Примеры:
<AppXML> var a = hash(); // пустой массив нулевой длины a["яблоко"] = "вкусно"; // теперь длина массива = 1 a["дыня"] = "очень вкусно"; // теперь длина массива = 2 a["vegetable"] = hash(); // вложенный хэш a["vegetable"]["salad"] = "good"; a["vegetable"]["potato"] = "very good"; a["vegetable"]["tomato sorts"] = [1, 2, 3]; println(a); </AppXML>
Ссылка на объект.
Допустимые операции: нет. Только работа с атрибутами.
Примеры:
<AppXML> <main> <window id="mainWindow" > <onCreated> var a = mainWindow; a.title = "Main"; mainWindow.title += " window"; </onCreated> </window> </main> </AppXML>
Строка вида nnn sss, где nnn - число, sss - строка, отделенная от числа пробелом, выделена в отдельный тип только для удобства работы с данными из БД.
Поддержка ограничена функциями суммирования и функциями парсинга на части. Работа с этим типом ограничена работой с БД.
Допустимые операции: см. (функции работы с типом "сумма с валютой")
Примеры:
<AppXML>
var a = "25 USD";
println("value=" + currencyValue(a));
println("currency name is " + currencyName(a));
</AppXML>
Специальное значение, означающее «отсутствие значения». null всегда меньше любого значения.
Допустимые операции (между операндами и операцией рекомендуется ставить пробелы):
== | сравнение | println(null == 5); |
<> ( != ) | сравнение содержимого | println(null != 5); |
< | сравнение длин | println(null < 5); |
> | сравнение длин | println(null > 5); |
Примеры:
<AppXML> var a = null; println(a); println(a > -100); </AppXML>