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

Source-Commit: a71480a4ae
This commit is contained in:
ci[bot]
2026-08-12 08:38:08 +08:00
parent 683f83d17c
commit 670ba950a6
1496 changed files with 292667 additions and 220122 deletions
@@ -4,10 +4,14 @@
## 本篇职责
<!-- section-id: syntax-11-001 -->
回答“`array(...)` 在 TSL 里除了最普通的一维数组,还能怎样组织数据;哪些矩阵样写法属于本页文档明确形态;元素、子集、整行和行集合关系应该怎样判断”。
## 核心规则
<!-- section-id: syntax-11-002 -->
- `array(...)` 既可以写顺序数组,也可以写字符串键表。
- 顺序数组下标从 `0` 开始;字符串仍然从 `1` 开始。
- `array(...)` 可以继续嵌套,形成二维或矩阵样数据。
@@ -21,9 +25,13 @@
## 可直接照写示例
<!-- section-id: syntax-11-003 -->
### 基础数组与键表
<!-- tags: 建数组, 字典, 键值对, 二维数组, 嵌套数组, 按名字取值 -->
<!-- section-id: syntax-11-004 -->
<!-- tags: 建数组, 数组下标, 数组索引, array 下标, 字典, 键值对, 二维数组, 嵌套数组, 按名字取值 -->
顺序数组与字符串键表:
@@ -71,6 +79,8 @@ writeLn(r2[1]);
### 矩阵样比较
<!-- section-id: syntax-11-005 -->
<!-- tags: 数组比大小, 链式比较, 整体比较 -->
矩阵链式比较:
@@ -96,6 +106,8 @@ writeLn(s[2]);
### `in`、`not in`、`sqlin`、`not sqlin`
<!-- section-id: syntax-11-006 -->
<!-- tags: 判断存在, 是否包含, 在不在里面, 子集判断 -->
`in` 既可以判断单个元素是否存在,也可以判断左侧数组是否是右侧结果集的子集:
@@ -156,6 +168,8 @@ writeLn(array(5, 6) not sqlin array((1, 2), (3, 4)));
### 行集合并、交、差、对称差
<!-- section-id: syntax-11-007 -->
<!-- tags: 交集, 并集, 差集, 合并两个数组, 去重合并, 共同部分 -->
下面这组最小例子展示“按行运算”和“结果会折叠重复行”:
@@ -192,6 +206,8 @@ outersect_rows := left_rows outersect right_rows;
## 和过滤运算的区别
<!-- section-id: syntax-11-008 -->
<!-- tags: 集合还是过滤, 重复行怎么办, 两种运算怎么选 -->
- 集合运算先把数据当成“行集合”来看,再做包含、并交差。
@@ -201,6 +217,8 @@ outersect_rows := left_rows outersect right_rows;
## 默认生成模板
<!-- section-id: syntax-11-009 -->
按需求语义从下面两种模板中选择:
代码块身份:可直接照写示例
@@ -212,6 +230,8 @@ row_matched := array(1, 2) sqlin array((1, 2), (3, 4));
## 点前缀比较算符产生逻辑数组
<!-- section-id: syntax-11-010 -->
<!-- tags: 逐元素比较, 得到真假数组, 批量判断, 掩码 -->
点前缀比较(`.=``.<>``.>``.>=``.<``.<=`)对数组/矩阵逐元素比较,返回真假值数组:
@@ -277,6 +297,8 @@ writeLn("子集 (1,0):", subset[1][0]);
## 非完全矩阵缺位当 0 处理与标量广播
<!-- section-id: syntax-11-011 -->
<!-- tags: 长度不一致, 缺位补零, 标量广播, 数组和数字运算 -->
基础算符作用于非完全矩阵(行长度不一致或字符串键不对齐的数组)时,对应位置不存在或为 `nil` 时**默认当 0 处理**
@@ -336,6 +358,8 @@ writeLn("(1,1):", result[1][1]);
## 本页不生成的范围
<!-- section-id: syntax-11-012 -->
- 专门的结果集过滤函数
- TS-SQL 查询与写回
- 更大范围的矩阵函数族
@@ -344,6 +368,8 @@ writeLn("(1,1):", result[1][1]);
## 禁止项
<!-- section-id: syntax-11-013 -->
- 不要把字符串下标按数组的 `0` 起始规则来写;字符串下标从 `1` 开始,详见 [03_values_and_literals.md](03_values_and_literals.md)。
- 不要把矩阵链式比较 `::...` 和标量链式比较混写成同一种语法。
- 不要把 `in``sqlin` 当成同一个概念。