...
При записи выражений можно указывать комментарии - участки программы которые не участвуют в вычислениях, а выполняют лишь информационную функцию. Есть два вида комментариев:
- Однострочные. Такие комментарии начинаются с двух слэшей // и заканчиваются окончанием строки.
- Многострочные. Начало многострочного комментарии начинается с /* и заканчивается */
...
Для хранения данных в сценариях ботов применяются переменные. Переменная представляет собой именованный участок памяти бота. Она создаётся при первом её использовании в каком-либо блоке операций. При этом значением по умолчанию для всех переменных является nil.
Имена переменных могут содержать цифры, английские и русские буквы, а также символ подчёркивания.
Существуют три вида переменных, различающихся своей областью видимости:
- Переменные видимые в пределах одного модуля в одном потоке. Доступны для чтения и записи. Названия таких переменных наяинаются с $. Такие переменные удобно использовать для хранения промежуточных операций и вычислений.
- Переменные видимые в пределах одного модуля в разных потоках. Доступны для чтения и записи. Названия переменных уровня модуля начинаются с #. Поскольку такие переменные видны во всех потоках бота их удобно использовать для взаимодействия между потоками.
- Глобальные переменные или переменные окружения. Автоматически задаваемые переменные, которые видны во всех потоках всех модулей бота. Эти переменные доступны только для чтения и хранят информацию о глобальном контексте работы бота. Их имена начинаются с символа @
Примеры записей переменных разных видов:
Блок кода | ||
---|---|---|
| ||
// Переменные $p и $r доступны только в потоке в котором они определены
$p = 2 * 3.14 * $r
// Эта переменная доступна во всех потоках в пределах текущего модуля
// (модуля в котором находится блок операций в котором определена переменная).
#count = queue.size()
// @communicationType глобальная переменная только для чтения. Доступна отовсюду.
$isChat = @communicationType == "TEXT" |
Переменные переменных
Язык выражений бота позоляет динамически вычислять имя переменной в процессе работы бота. Это в частности означает что значением одной переменной может быть имя другой переменной. Или, в более общем случае, именем переменной может быть любое выражение, значением которого является строка.
В примере ниже мы определяем три переменные содержащие названия цветов. Затем мы определяем случайно число от 1 до 3 и далее формируем название одной из переменных с тем чтобы узнать значение случайного цвета.
Блок кода | ||
---|---|---|
| ||
// Создадим три переменные с именами x1, x2 и x3 $x1 = "red" $x2 = "blue" $x3 = "green" // Случайное число от 1 до 3 $n = math.rand(1, 3) // Получаем цвет динамически сформировав имя переменной с цветом и взяв её значение $color = $("x" + $n) |
Типы данных
Существует три примитивных типа данных:
Числа
Все числа трактуются как вещественные знаковые с плавающей точкой. Минимальное и максимальное значение определяется той вычислительной средой в которой работает интерпретатор языка выражений.
Строки
Представляют собой произвольную последовательность симолов заключённую в одинарные или двойные кавычки.