Синтаксис языка
В этом разделе описан синтаксис языка
Основы
Как устроен SQ
Когда, например, в тексте сообщения попадается выражение в двойных фигурных скобках {{}}, бот вычисляет выражение внутри скобок и подставляет его значение в текст сообщения.
Например, значением выражения 2 * 2 является число 4, а значением выражения "привет" — строка привет.
Примеры синтаксиса
Символом >>> в примерах ниже отмечен ввод пользователя, а на строку ниже указан результат вычисления этого выражения.
Символом # отмечены комментарии (пояснения) к коду.
Арифметика
Переменные
Переменные позволяют хранить данные пользователей.
Переменные делятся на типы: числа, строки, массивы и словари.
От типа переменной зависит набор действий, который можно с ней выполнить. Например, числа можно сравнивать (>, <, >=, <=, ==, !=), делить и умножать. Строки, можно только складывать.
Имена переменных в боте (специальные, локальные и глобальные) начинаются и заканчиваются со знака процента, например, %сообщение%. С точки зрения SQ эти проценты -- часть имени переменной, а создавать новые временные переменные в самом SQ можно без значков процента, например, x = 10.
Операции сравнения
Вызов функций
Функции позволяют преобразовывать данные, например, получить длину строки, сгенерировать случайное число или добавить элемент в массив.
В SQ существует 3 варианта вызова функций: через точку, через пайп (|) и явно -- они взаимозаменяемые и равноценные.
Пара примеров:
Работа с массивами
Массивы позволяют хранить несколько значений в одной переменной. Например, можно хранить список покупок клиента.
Словари
Словарь похож на массив, но он позволяет запоминать сопоставление одного элемента — другому. Например, количество товара в корзине.
Функциональное программирование
Это сложный для понимания раздел, если вы не были ранее знакомы с программированием. Вполне возможно, что вы можете пропустить этот раздел)
Лямбды (лямбда-выражения)
Лямбда (lambda) — анонимная функция.
В SQ нет возможности объявлять свои функции, но для некоторых задач, вроде преобразования массивов, фильтрации и сортировки можно использовать лямбда-выражения.
Синтаксис
Давайте для примера рассмотрим функцию, которая принимает 3 аргумента: a, b, c и возвращает их сумму:
Таким образом, лямбда-выражение состоит их 2 частей: списка аргументов (до стрелки) и выражения (после стрелки). Результат выражения вернётся при вызове этой функции.
Пример
Тут мы использовали функцию map(), в которую передали в качестве аргумента нашу лямбду. Функция map() пройдёт по всем парам ключ-значение (k, v) в словаре корзина и вместо него вернёт строку — результат сложения k, дефиса, v и слова "кг".
Last updated