🐛 fix(tsl-syntax-reference): close verified syntax gaps

This commit is contained in:
csh
2026-08-13 14:49:43 +08:00
parent ede9287d5f
commit 8315f1060a
17 changed files with 619 additions and 96 deletions
@@ -31,7 +31,7 @@
<!-- section-id: syntax-11-004 -->
<!-- tags: 建数组, 数组下标, 数组索引, array 下标, 字典, 键值对, 二维数组, 嵌套数组, 按名字取值 -->
<!-- tags: 建数组, 字典, 键值对, 二维数组, 嵌套数组, 按名字取值 -->
顺序数组与字符串键表:
@@ -299,7 +299,7 @@ writeLn("子集 (1,0):", subset[1][0]);
<!-- section-id: syntax-11-011 -->
<!-- tags: 长度不一致, 缺位补零, 标量广播, 数组和数字运算 -->
<!-- tags: 长度不一致, 缺位补零, 标量广播, 数组和数字运算, 按行广播, 二维矩阵乘一维数组 -->
基础算符作用于非完全矩阵(行长度不一致或字符串键不对齐的数组)时,对应位置不存在或为 `nil` 时**默认当 0 处理**
@@ -356,6 +356,32 @@ writeLn("(1,1):", result[1][1]);
- `matrix_value + 10` 每个元素都加 10
- 这些是逐元素运算(element-wise),区别于矩阵乘法 `:*`,见 [21_matrix_deep_dive.md](21_matrix_deep_dive.md)
二维矩阵与一维数组做基础算术时,一维数组按“行”广播;它的长度必须等于矩阵行数:
代码块身份:可直接照写示例
```tsl
matrix_value := array((1, 2, 3), (4, 5, 6));
row_factors := array(10, 100);
left_result := matrix_value * row_factors;
right_result := row_factors * matrix_value;
writeLn(left_result[0][0]);
writeLn(left_result[1][2]);
writeLn(right_result[0][1]);
writeLn(right_result[1][0]);
```
代码块身份:输出片段
```text
10
600
20
400
```
说明:第一行使用 `10`,第二行使用 `100`;左右操作数交换后仍按行广播。不要把这条规则误写成按列广播。
## 本页不生成的范围
<!-- section-id: syntax-11-012 -->
@@ -383,3 +409,4 @@ writeLn("(1,1):", result[1][1]);
- 不要把普通 `array(...)` 自动升级成 `FMArray``FMArray` 专属事实见 [22_fmarray.md](22_fmarray.md)。
- 不要把点前缀比较 `.>` 和矩阵链式比较 `::>` 混用;`.>` 返回逻辑数组,`::>` 是链式比较。
- 不要以为非完全矩阵缺位会报错;默认当 `0` 处理。
- 二维矩阵与一维数组运算时,不要把一维数组当成按列因子;它按行广播且长度要匹配行数。