📝 docs(tsl): align agent-facing guidance
This commit is contained in:
@@ -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`
|
||||
|
||||
## 最小可编译示例
|
||||
|
||||
|
||||
Reference in New Issue
Block a user