List, Map, Range
Коллекции — несколько значений в одной переменной. Список хранит значения по порядку, карта — пары «ключ → значение», диапазон — последовательность целых чисел.
List — список
{% set modes = ['Броулбол', 'Нокаут'] %}
{% do modes.add('Ограбление') %}
{{ modes[0] }} {# Броулбол #}Номера элементов начинаются с 0. В списке — до 250 элементов. Менять можно только списки, созданные в шаблоне; списки из данных бота (club.members, member.roles) — только читать.
| Метод | Возвращает | Описание |
|---|---|---|
add(x) | Логический | Добавить в конец |
addIfAbsent(x) | Логический | Добавить, если такого еще нет |
addAll(список) | Логический | Добавить все элементы другого списка |
replace(i, x) | Прежнее значение | Заменить элемент номер i |
remove(x) | Логический | Удалить первое вхождение x |
removeAll(список) | Логический | Удалить все вхождения элементов списка |
removeAt(i) | Удаленный элемент | Удалить элемент номер i |
contains(x) | Логический | Есть ли элемент |
containsAll(список), containsAny(список) | Логический | Есть ли все или хотя бы один |
indexOf(x) | Число | Номер элемента или −1 |
countOf(x) | Число | Сколько раз встречается |
clear() | — | Очистить |
Без автоконвертации
В методах списков типы сравниваются строго: ['1', '2'].contains(1) — false, потому что в списке строки.
Range — диапазон
{% for i in [1..5] %}{{ i }} {% endfor %} {# 1 2 3 4 5 #}
{% for i in [5..1] %}{{ i }} {% endfor %} {# 5 4 3 2 1 #}Диапазон включает оба конца. Изменять его нельзя — нужен изменяемый список, создайте его: {% set list = [] %}{% do list.addAll([1..5]) %}.
Map — карта
{% set prices = { vip: 500, premium: 1000 } %}
{% do prices.put('legend', 5000) %}
{{ prices.vip }} {{ prices['premium'] }}
{% for name, price in prices %}{{ name }}: {{ price }}
{% endfor %}Ключ без кавычек — строка, а не переменная. В карте — до 250 пар, порядок добавления сохраняется. Менять можно только карты, созданные в шаблоне.
| Метод | Описание |
|---|---|
put(k, v) | Записать значение, вернет прежнее или null |
putAll(карта) | Записать все пары другой карты |
putIfAbsent(k, v) | Записать, если ключа еще нет |
remove(k), remove(k, v) | Удалить ключ (или только если значение равно v) |
containsKey(k), containsValue(v) | Есть ли ключ или значение |
clear() | Очистить |
Функции для коллекций
length, first, last, join, slice, sort, sort_by, batch, keys, values, reverse, shuffle, unique — см. Функции.