🐛 fix(tsl-syntax-reference): route derived rules and bound section size
This commit is contained in:
@@ -68,7 +68,7 @@
|
||||
- `createObject(...)` 示例只在字符串类名、类类型变量或跨 `unit` 路径场景复制。
|
||||
- `property` 类型注解只有在已有类型名证据时生成;不要为了完整性发明说明性类型名。
|
||||
|
||||
### 最小类与声明位置
|
||||
## 最小类与声明位置
|
||||
|
||||
<!-- section-id: syntax-08-004 -->
|
||||
|
||||
@@ -180,7 +180,7 @@ writeLn(a);
|
||||
- 函数体内部声明类会报 `invalid statement`
|
||||
- 在松散语句脚本里,`type MyClass = class ... end;` 之后继续写 `writeLn(a);` 也会报 `invalid statement`
|
||||
|
||||
### 字段、静态成员、常量与可见性
|
||||
## 字段、静态成员、常量与成员访问
|
||||
|
||||
<!-- section-id: syntax-08-005 -->
|
||||
|
||||
@@ -275,6 +275,12 @@ end;
|
||||
|
||||
- `c.Inc()` 输出 `11`
|
||||
|
||||
## 成员可见性与继承访问
|
||||
|
||||
<!-- section-id: syntax-08-013 -->
|
||||
|
||||
<!-- tags: 成员访问可见性, private protected public, 可见性, 访问权限, 子类访问 -->
|
||||
|
||||
可见性 `private` / `protected` / `public`:
|
||||
|
||||
代码块身份:可直接照写示例
|
||||
@@ -396,7 +402,7 @@ end;
|
||||
- 子类里直接调用父类 `private` 方法也会在执行时报错。
|
||||
- `private` / `protected` 方法访问也遵循同样边界:外部不能调 `private` / `protected` 方法,子类只能调 `protected` 方法,不能调 `private` 方法。
|
||||
|
||||
### 构造函数边界
|
||||
## 构造函数边界
|
||||
|
||||
<!-- section-id: syntax-08-006 -->
|
||||
|
||||
@@ -427,11 +433,11 @@ end;
|
||||
- 上述例子里的 `a.value` 输出 `<NIL>`,说明 `private create` 没有执行。
|
||||
- `protected create`、`createObject("A", ...)` 和 `createObject(class(A), ...)` 也按同一规则处理;构造函数应保持 `public`。
|
||||
|
||||
### 属性、类型注解与类外实现
|
||||
## 基础 property 与类型注解
|
||||
|
||||
<!-- section-id: syntax-08-007 -->
|
||||
|
||||
<!-- tags: property, 读写属性, getter setter, 方法写在类外 -->
|
||||
<!-- tags: property, 读写属性, getter setter -->
|
||||
|
||||
基础 `property`:
|
||||
|
||||
@@ -530,6 +536,12 @@ abc
|
||||
abc
|
||||
```
|
||||
|
||||
## 类内声明与类外实现
|
||||
|
||||
<!-- section-id: syntax-08-014 -->
|
||||
|
||||
<!-- tags: 类外实现, 方法写在类外, 类内声明, 外部实现, 类方法实现 -->
|
||||
|
||||
类内声明、类外实现的带类型重载方法:
|
||||
|
||||
代码块身份:可直接照写示例
|
||||
@@ -590,6 +602,12 @@ left
|
||||
left
|
||||
```
|
||||
|
||||
## 索引与固定 index property
|
||||
|
||||
<!-- section-id: syntax-08-015 -->
|
||||
|
||||
<!-- tags: 索引 property, 固定索引 property, index property, 固定整数索引, 固定字符串索引 -->
|
||||
|
||||
索引型 `property`:
|
||||
|
||||
代码块身份:可直接照写示例
|
||||
@@ -695,6 +713,12 @@ end;
|
||||
- `obj.school` 输出 `math`
|
||||
- `obj.idx("High school")` 也输出 `math`
|
||||
|
||||
## 参数化 property 与 accessor
|
||||
|
||||
<!-- section-id: syntax-08-016 -->
|
||||
|
||||
<!-- tags: 参数化 property, property 参数, accessor, getter setter 参数 -->
|
||||
|
||||
参数化 `property`:
|
||||
|
||||
代码块身份:可直接照写示例
|
||||
@@ -762,7 +786,7 @@ end;
|
||||
- `write setItem` 这种“写方法接参数个数 + 赋值值”的写法可以通过
|
||||
- 上述例子中的 `obj.Item(2)` 输出 `x`
|
||||
|
||||
### 对象创建与类类型
|
||||
## 对象创建与类类型
|
||||
|
||||
<!-- section-id: syntax-08-008 -->
|
||||
|
||||
@@ -916,11 +940,11 @@ end;
|
||||
- `findClass("MathBox").Add(...)` 可以调用类方法
|
||||
- 上述例子依次输出 `7`、`11`
|
||||
|
||||
### 重载、继承与析构
|
||||
## 重载与继承
|
||||
|
||||
<!-- section-id: syntax-08-009 -->
|
||||
|
||||
<!-- tags: 继承, 父类子类, 方法重载, 同名不同参, 析构, 对象销毁时, 调用父类方法, 父类同名方法, inherited -->
|
||||
<!-- tags: 继承, 父类子类, 方法重载, 同名不同参, 析构, 对象销毁时, 调用父类方法, 父类同名方法 -->
|
||||
|
||||
`overload` 方法:
|
||||
|
||||
@@ -1036,6 +1060,12 @@ end;
|
||||
- 当多个父类存在同名方法时,本例优先命中第一个父类 `A`
|
||||
- 上述例子中的 `obj.Speak()` 输出 `1`
|
||||
|
||||
## 虚方法、覆盖与隐藏
|
||||
|
||||
<!-- section-id: syntax-08-017 -->
|
||||
|
||||
<!-- tags: 方法隐藏 hide, hide, override, virtual, 覆盖与隐藏 -->
|
||||
|
||||
基础 `virtual` / `override`:
|
||||
|
||||
代码块身份:可直接照写示例
|
||||
@@ -1133,6 +1163,12 @@ end;
|
||||
- `c.Ask()` 输出 `child`:`virtual` + `override` 后,父类方法内部的 `Who()` 定向到子类实现
|
||||
- 这就是 hide 与 override 的关键区别:hide 只影响直接调用,override 改变了所有经由基类的间接调用
|
||||
|
||||
## 祖先类调用与类型视图
|
||||
|
||||
<!-- section-id: syntax-08-018 -->
|
||||
|
||||
<!-- tags: 调用父类 inherited, inherited, Inherited, 祖先类调用, 父类方法, 类型视图 -->
|
||||
|
||||
`class(BaseClass, ObjectName).MethodName()`:
|
||||
|
||||
代码块身份:可直接照写示例
|
||||
@@ -1257,6 +1293,12 @@ end;
|
||||
- `Inherited BaseValue(5)` 可以显式调用父类指定方法
|
||||
- 上述例子依次输出 `6`、`9`
|
||||
|
||||
## 析构与 self 工厂
|
||||
|
||||
<!-- section-id: syntax-08-019 -->
|
||||
|
||||
<!-- tags: 析构 destroy, destroy, 对象销毁, self 工厂, self(0), self(1) -->
|
||||
|
||||
析构函数 `destroy`:
|
||||
|
||||
代码块身份:可直接照写示例
|
||||
@@ -1323,7 +1365,7 @@ end;
|
||||
- `self(1)` 返回的对象在这个例子里是 `ChildBox`,因此输出 `1`
|
||||
- `self(0)` 返回的对象在这个例子里不是 `ChildBox`,因此输出 `0`
|
||||
|
||||
### 跨 unit 类路径
|
||||
## 跨 unit 类路径
|
||||
|
||||
<!-- section-id: syntax-08-010 -->
|
||||
|
||||
|
||||
Reference in New Issue
Block a user