📦 deps(tsl): sync tsl-playbook from ecedf69b

Source-Commit: ecedf69b9c
This commit is contained in:
ci[bot]
2026-08-24 09:29:51 +08:00
parent 2f0d80da65
commit 2b74e1466d
664 changed files with 28934 additions and 37020 deletions
@@ -14,6 +14,8 @@
- 默认变量模型是“直接赋值即得到变量”,不要求先写 `var`
- 例如:`a := 1; b := array(1, 2, 3);` 这种写法可直接编译。
- 这条只覆盖整体赋值;对还没建立的变量直接写单元格赋值(`q[0][0] := 1;`)会在运行时报
`变量类型不是Array`,要先用 `q := array();` 建立容器再写下标。
- `var name;` 只作为显式声明写法,不能当成默认必需步骤。
- `const name = value;` 是常量初始化的默认生成写法;`const` 不能只声明名字而不初始化。
- 文档规则:
@@ -73,6 +75,40 @@ var a;
a := 1;
```
整体赋值免声明,但单元格赋值不免——容器要先建立:
代码块身份:可直接照写示例
```tsl
whole := rand(3, 3);
writeLn(mRows(whole));
cell := array();
cell[0][0] := 1;
writeLn(cell[0][0]);
```
结果说明:
- 依次输出 `3``1`
- `whole := rand(3, 3)` 说明整体接一个数组不需要先声明
- `cell := array();` 这一行不能省;省掉后 `cell[0][0] := 1;` 会在运行时报
`变量类型不是Array`,因为下标赋值需要一个已经是数组的容器
代码块身份:输出片段
```text
3
1
```
代码块身份:反例 / 不可照写
```text
q[0][0] := 1;
```
对还没建立的变量直接写单元格赋值会运行时报 `变量类型不是Array`;先写 `q := array();`
`{$explicit+}` 下的显式声明:
代码块身份:可直接照写示例
@@ -393,6 +429,7 @@ items := array(1, 2, 3);
<!-- section-id: syntax-04-008 -->
- 以为普通变量必须先写 `var` 才能使用。
- 把“整体赋值免声明”推广到单元格赋值,直接对未建立的变量写 `q[0][0] := 1;`
- 把常量初始化写成普通变量赋值风格。
- 以为 `const =` 顶层单独写一行就一定成立。
- 以为 `const` 可以只声明名字,不写初始化表达式。