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

闭包、回调和用户数据(重要)

CSL 目前 有闭包。内联 proc() { ... } 定义不能捕获外部变量。

当你需要回调(UI 处理器、死亡钩子等)时,将回调与一个 要携带上下文,请将回调与一个 字段 配对。

API 参考

每个项目都包含一个 请检查项目中生成的 文件夹,包含最新的核心 API 面。若你想查找“该类型有哪些方法?”,该文件夹是事实来源。

最后更新于