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, хук смерти и т. п.), свяжите колбэк с userdata: Object полем.

Справочник API

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

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