Типы данных

AppScript является языком с динамической типизацией, поддерживает 10 типов данных:

  • boolean
  • integer
  • double
  • string
  • date
  • array
  • hash-array
  • pointer to object
  • «сумма с валютой»
  • null

boolean

Булевый (логический) тип может иметь два значения: 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>

integer

Целое число может сколь угодно большим знаковым числом.

Допустимые операции (между операндами и операцией рекомендуется ставить пробелы):

+ сложение 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>

double

Вещественное число может сколь угодно большим знаковым числом.

Допустимые операции (между операндами и операцией рекомендуется ставить пробелы):

+ сложение 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>

string

Строка задается последовательностью символов, заключенных в двойные или одинарные кавычки. Двойные кавычки предпочтительнее.
Если требуется вставить внутрь строки кавычку, она должны быть экранирована обратным слэшем '\'.

Поддерживаются спецсимволы:

\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>

date

Значение даты записывается в переменную через функцию 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>

array

Размерность массива может быть произвольной.
Элементы массива могут быть разнородными.

Допустимые операции (между операндами и операцией рекомендуется ставить пробелы):

+ сложение 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>

hash-array

Ассоциативный массив (хэш).

Допустимые операции (между операндами и операцией рекомендуется ставить пробелы):

+ сложение 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>

pointer to object

Ссылка на объект.

Допустимые операции: нет. Только работа с атрибутами.

Примеры:

<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

Специальное значение, означающее «отсутствие значения». null всегда меньше любого значения.

Допустимые операции (между операндами и операцией рекомендуется ставить пробелы):

== сравнение println(null == 5);
<> ( != ) сравнение содержимого println(null != 5);
< сравнение длин println(null < 5);
> сравнение длин println(null > 5);

Примеры:

<AppXML>
	var a = null;
	println(a);
	println(a > -100);
</AppXML>
 
script/data_type.txt · Последние изменения: 2009/09/16 09:04 (внешнее изменение)
 
Recent changes RSS feed Valid XHTML 1.0 Valid CSS