📝 docs(tsl): align agent-facing guidance

This commit is contained in:
csh
2026-05-28 19:12:34 +08:00
parent c48354e0cb
commit d8eb418277
63 changed files with 1921 additions and 371 deletions
+16 -2
View File
@@ -16,6 +16,14 @@
本页后半段有少量依赖 `unit` 的双文件示例;如果你还没建立 `unit` / `uses` 的多文件心智模型,先看 [10_units_and_scope.md](10_units_and_scope.md)。
## Agent 对象/类判断流程
1. 先判断要写普通对象、继承、构造函数、类方法、静态字段还是运行时创建。
2. 对象声明优先使用本页已验证的 `type Name = class ... end;` 骨架。
3. 类方法和静态字段优先用 `class(Name).Member` 或已验证反射入口,不要裸写类名调用。
4. 构造函数默认保持 `public create`,不要把 `private` / `protected create` 当成会自动执行的构造函数。
5. 没有已验证代码块时不要发明对象/类写法。
## 必须记住的规则
- 类定义统一按 `type Name = class ... end;` 写。
@@ -49,7 +57,7 @@
- 工厂式 `self(0)` / `self(1)` 已验证可用;当前解释器没有通过 `self()` 这种无参工厂式写法。
- 已做双文件运行验证:如果类定义在 `unit` 的嵌套路径里,可以用 `CreateObject("Unit1.Class1.Class2")` 这种字符串路径创建对象。
- 已做双文件运行验证:可以写 `type MyNewClass = class(Unit1.Class1.Class2)` 直接继承单元里的嵌套类路径。
- 当前环境里 `{$IFDEF ParentClassInUnit}` 为真,可用于探测“继承和构造单元中的类”能力是否可用。
- 已验证 `{$IFDEF ParentClassInUnit}` 为真,可用于探测“继承和构造单元中的类”能力是否可用。
- `private` / `protected` / `public` 已验证可用;类开头未写可见性时,成员默认按 `public` 处理。
- 同一个可见性段里后续没有切换关键字的成员,会沿用前一个可见性。
- 外部访问 `private` / `protected` 字段或方法,会在执行时报对象成员访问错误。
@@ -109,6 +117,12 @@ end;
- 说明在当前解释器里,顶层类声明可以放在松散语句之后
- 同时也说明 `CreateObject("MyClass")` 可以解析到后面才出现的类声明
代码块身份:已验证输出片段
```text
5
```
顶层函数后面也可以继续声明类:
代码块身份:已验证可执行示例
@@ -1234,7 +1248,7 @@ end.
已验证运行结果:
- 当前环境里 `{$IFDEF ParentClassInUnit}` 输出 `1`
- `{$IFDEF ParentClassInUnit}` 输出 `1`
## 最小可编译示例