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 表面。如果你想找“这个类型有哪些方法?”,那个文件夹就是权威来源。

最后更新于