В блоке операций/выражений можно указывать произвольное количество операций которые должен вычислить бот в процессе своей работы. Операции представляют собой выражения записанные с помощью подмножества языка программирования разговорных ботов описание которого содержится ниже.
Комментарии
При записи выражений можно указывать комментарии - участки программы которые не участвуют в вычислениях, а выполняют лишь информационную функцию. Есть два вида комментариев:
- Однострочные. Такие комментарии начинаются с двух слэшей // и заканчиваются окончанием строки.
- Многострочные. Начало многострочного комментарии начинается с /* и заканчивается */
Пример комментариев:
// Это однострочный комментарий $x = time() /** * А это уже * многострочный * комментарий */ say("Time is " + $x)
Переменные
Для хранения данных в сценариях ботов применяются переменные. Переменная представляет собой именованный участок памяти бота. Она создаётся при первом её использовании в каком-либо блоке операций.
Существуют три вида переменных, различающихся своей областью видимости:
- Переменные видимые в пределах одного модуля в одном потоке. Доступны для чтения и записи. Названия таких переменных наяинаются с $. Такие переменные удобно использовать для хранения промежуточных операций и вычислений.
- Переменные видимые в пределах одного модуля в разных потоках. Доступны для чтения и записи. Названия переменных уровня модуля начинаются с #. Поскольку такие переменные видны во всех потоках бота их удобно использовать для взаимодействия между потоками.
- Глобальные переменные или переменные окружения. Автоматически задаваемые переменные, которые видны во всех потоках всех модулей бота. Эти переменные доступны только для чтения и хранят информацию о глобальном контексте работы бота. Их имена начинаются с символа @
Примеры записей переменных разных видов:
// Переменные $p и $r доступны только в потоке в котором они определены $p = 2 * 3.14 * $r // Эта переменная доступна во всех потоках в пределах текущего модуля // (модуля в котором находится блок операций в котором определена переменная). #count = queue.size() // @communicationType глобальная переменная только для чтения. Доступна отовсюду. $isChat = @communicationType == "TEXT"