book-openСправочник по продвинутому языку

CSL предоставляет вам несколько инструментов, похожих на массивы, которые покрывают большинство игровых задач: фиксированные массивы, срезы и динамические массивы. Эта страница — практическое руководство по их использованию без подводных камней.

Краткий глоссарий

  • Фиксированный массив: [N]T — размер известен на этапе компиляции.

  • Срез / управляемый массив: []T — представление поверх данных массива (часто используется для параметров).

  • Динамический массив: [..]T — изменяемый по размеру список с количеством и емкостью.

fixed: [4]int = {1, 2, 3, 4};
view: []int = fixed; // представление среза

list: [..]int;
list->append(10);
list->append(20);
circle-info

Методы динамических массивов используют -> (например, list->append(x)). Поля используют . (например, list.count).

Динамические массивы ([..]T)

Динамические массивы — это тип «списка по умолчанию» для игрового кода.

Создание и добавление

players_seen: [..]string;
players_seen->append(player->get_user_id());

Резервирование емкости (производительность)

Если вы знаете, что добавите много элементов, сначала зарезервируйте место, чтобы избежать повторных перераспределений.

Удаление элементов

Обычно вы выбираете между быстрым удалением (порядок не важен) и упорядоченным удалением (с сохранением порядка).

Также можно удалить по индексу:

Очистка

Передача массивов в процедуры

Многие API принимают []T (срез/представление). Динамические массивы можно передавать там, где ожидается []T .

Шаблоны итерации

Итерация по элементам

Итерация по индексам (включающие диапазоны)

0..n-1 часто используется для циклов в стиле «слотов»:

circle-exclamation

Замыкания, колбэки и userdata (важно)

CSL не имеют замыкания. Встроенные proc() { ... } определения не могут захватывать переменные из окружающей области.

Когда вам нужны колбэки (обработчики UI, хуки смерти и т. д.), связывайте колбэк с полем полем.

Справочник API

Каждый проект включает папку папку, содержащую актуальный основной API. Если вы пытаетесь найти «какие методы есть у этого типа?», эта папка — источник истины.

Последнее обновление