Перейти к содержимому

Базовые типы данных

В данном разделе описываются все базовые типы данных, используемые в шаблонном движке JuniperBot.

У некоторых типов данных методы могут иметь квоту вызовов. Квота означает сколько раз можно вызвать этот метод за шаблон. Вызовы, превышающие указанную квоту, будут проигнорированы и не будут выполнять никаких действий.

Примитивы

Самыми базовыми выражениями являются примитивы, посмотрите на таблицу ниже:

НазваниеПримеры
Дробные числа-1.5, 5.7, 1.0
Целые числа-10, 56, 0
Нулевая ссылкаnull
Логический типtrue или false
Строка"строка в двойных скобочках"
'строка в апострофах'
Символ'ф'

Списки

Объявить список можно либо упорядоченным перечислением элементов списка явно, либо указанием диапазона значений.

  1. Для объявления упорядоченных списков значений или результатов выражений необходимо явно перечислить их через запятую в квадратных скобках:

    [1, 2, 3]
    

    Список, объявленный таким способом, является изменяемым. В таких списках доступны методы для добавления, удаления, замены элементов и очистки списка.

  2. Для объявления списка через диапазон значений необходимо указать лишь начальный и конечный элемент списка:

    [1..3]
    

    Список, объявленный таким способом, неизменяемый. Это своего рода кортеж, который удобно использовать, например, в циклах.

Внимание

Максимально допустимый размер списка ― 250 элементов.

Методы

Конвертация типов не применяется для методов списков:

JuniperBot Template
{{ [1..3].contains(1) }} - {{ [1..3].contains('1') }}

Данный шаблон вернёт true - false.

При работе со списками, особенно в методах, подразумевающих поиск, всегда следует учитывать тип данных.

Внимание

Модифицирующие методы доступны только для списков, созданных упорядоченным перечислением элементов по примеру выше.

МетодПараметрыВозвращаетОписание
add(Элемент)Число
Строка
Логический
ЛогическийДобавляет указанный элемент в конец списка.
Возвращает true, если элемент был добавлен.
addIfAbsent(Элемент)Число
Строка
Логический
ЛогическийДобавляет указанный элемент в конец списка, если этого элемента в списке нет.
Возвращает true, если элемент был добавлен.
addAll(Список)СписокЛогическийДобавляет все элементы указанного списка в конец текущего списка.
Возвращает true, если в результате этого список был изменён.
replace(Индекс, Элемент)Индекс:
Число

Элемент:
Число
Строка
Логический
Число
Строка
Логический
Заменяет элемент по указанному индексу на указанное значение.
Возвращает предыдущее значение этой позиции.
remove(Элемент)Число
Строка
Логический
ЛогическийУдаляет первый найденный элемент из списка с указанным значением.
Возвращает true, если элемент был удалён.
removeAll(Список)СписокЛогическийУдаляет все найденные элементы из списка.
Возвращает true, если был удалён хотя бы один элемент.
removeAt(Индекс)ЧислоЧисло
Строка
Логический
Удаляет элемент по указанному индексу.
Возвращает удалённый элемент списка.
contains(Элемент)Число
Строка
Логический
ЛогическийПроверяет наличие указанного элемента в списке.
Возвращает true, если такой элемент существует.
containsAll(Список)СписокЛогическийПроверяет наличие всех указанных элементов в списке.
Возвращает true, если указанные элементы существуют.
containsAny(Список)СписокЛогическийПроверяет наличие хотя бы одного из указанных элементов в списке.
Возвращает true, если хотя бы один указанный элемент существует.
indexOf(Элемент)Число
Строка
Логический
ЧислоВозвращает индекс элемента в списке или -1 если такого элемента нет.
countOf(Элемент)Число
Строка
Логический
ЧислоВозвращает количество вхождений указанного элемента в список.
clear()--Полностью очищает список.

Карта (Map)

Карта — это структура данных, в которой значения хранятся не по одному как в списке выше, а в паре "ключ - значение". Ключом карты может быть любой идентификатор или строка, а значением — уже любое выражение. Объявляются карты следующим образом:

{ key1: 'value1', 'key 2': 'value2' }

Имейте в виду, что идентификаторы, представленные ключами, не являются названиями переменных, они всегда конвертируются в их строковое представление. Таким образом идентификатор key1 внутри карты будет строкой "key1".

Внимание

Максимально допустимый размер карты ― 250 пар.

Методы

Конвертация типов не применяется для методов карт:

JuniperBot Template
{% set map = { key: 1 } %}
{{ map.containsValue(1) }} - {{ map.containsValue('1') }}

Данный шаблон вернёт true - false.

При работе с картами, особенно в методах, подразумевающих поиск значений, всегда следует учитывать тип данных.

Внимание

Указанные методы доступны только для карт, созданных вручную по примеру выше.

МетодПараметрыВозвращаетОписание
put(Ключ, Значение)Ключ:
Строка

Значение:
Число
Строка
Логический
Число
Строка
Логический
Добавляет в карту новую пару ключ-значение. Если указанный ключ уже есть в карте, заменяет его значение на новое.
Возвращает предыдущее значение указанного ключа или null если такого не было
putAll(Карта)Карта-Добавляет все элементы указанной карты в текущую.
putIfAbsent(Ключ, Значение)Ключ:
Строка

Значение:
Число
Строка
Логический
Число
Строка
Логический
Добавляет новую пару ключ-значение только если значения для указанного ключа в карте ещё нет.
Возвращает существующее значение указанного ключа или null если такого не было
remove(Ключ)СтрокаЧисло
Строка
Логический
Удаляет пару ключ-значение по указанному ключу.
Возвращает предыдущее значение указанного ключа или null если такого не было
remove(Ключ, Значение)Ключ:
Строка

Значение:
Число
Строка
Логический
ЛогическийУдаляет пару ключ-значение по указанному ключу и значению.
Возвращает true если удаление успешно
containsKey(Ключ)СтрокаЛогическийВозвращает true, если карта содержит указанный ключ.
containsValue(Значение)Число
Строка
Логический
ЛогическийВозвращает true если есть хотя бы один ключ с указанным значением.
clear()--Полностью очищает карту

DateTime

Этот тип данных описывает объект даты и времени и операции над ними.

Свойства

СвойствоТипОписание
millisЧислоМиллисекунды
millisOfDayЧислоМиллисекунды дня
millisOfSecondЧислоМиллисекунды секунды
secondOfDayЧислоСекунда дня
secondOfMinuteЧислоСекунда минуты
minuteOfDayЧислоМинута дня
minuteOfHourЧислоМинута часа
hourOfDayЧислоЧас дня
dayOfMonthЧислоДень месяца
dayOfWeekЧислоДень недели
dayOfYearЧислоДень в году
weekOfWeekyearЧислоНеделя в году
weekyearЧислоГод с учетом недели *
monthOfYearЧислоМесяц в году
yearЧислоГод
yearOfCenturyЧислоГод века
yearOfEraЧислоГод эпохи
centuryOfEraЧислоВек эпохи
eraЧислоЭпоха
zoneOffsetЧислоСмещение часового пояса в миллисекундах
isAfterNowЛогическийtrue если дата в будущем
isBeforeNowЛогическийtrue если дата в прошлом

* Год с учётом недели

В определенные годы первая неделя начинается в декабре, например, в декабре 1997 года. В другие годы первая неделя начинается с 53-й недели предыдущего года, как, например, в январе 1999 года. В течение этих нескольких дней, когда номер недели текущего года относится к предыдущему году, свойства year и weekyear возвращают разные значения.

Методы

Методы ниже не модифицирует текущий экземпляр, а возвращают новый.

МетодПараметрыВозвращаетОписание
plusMillis(Значение)ЧислоDateTimeВозвращает копию этой даты плюс указанное количество миллисекунд
plusSeconds(Значение)ЧислоDateTimeВозвращает копию этой даты плюс указанное количество секунд
plusMinutes(Значение)ЧислоDateTimeВозвращает копию этой даты плюс указанное количество минут
plusHours(Значение)ЧислоDateTimeВозвращает копию этой даты плюс указанное количество часов
plusDays(Значение)ЧислоDateTimeВозвращает копию этой даты плюс указанное количество дней
plusWeeks(Значение)ЧислоDateTimeВозвращает копию этой даты плюс указанное количество недель
plusMonths(Значение)ЧислоDateTimeВозвращает копию этой даты плюс указанное количество месяцев
plusYears(Значение)ЧислоDateTimeВозвращает копию этой даты плюс указанное количество лет
minusMillis(Значение)ЧислоDateTimeВозвращает копию этой даты минус указанное количество миллисекунд
minusSeconds(Значение)ЧислоDateTimeВозвращает копию этой даты минус указанное количество секунд
minusMinutes(Значение)ЧислоDateTimeВозвращает копию этой даты минус указанное количество минут
minusHours(Значение)ЧислоDateTimeВозвращает копию этой даты минус указанное количество часов
minusDays(Значение)ЧислоDateTimeВозвращает копию этой даты минус указанное количество дней
minusWeeks(Значение)ЧислоDateTimeВозвращает копию этой даты минус указанное количество недель
minusMonths(Значение)ЧислоDateTimeВозвращает копию этой даты минус указанное количество месяцев
minusYears(Значение)ЧислоDateTimeВозвращает копию этой даты минус указанное количество лет
isAfter(Дата)DateTimeЛогическийЯвляется ли эта дата позже указанной
isBefore(Дата)DateTimeЛогическийЯвляется ли эта дата раньше указанной

Все права зафырканы.