生态言据
校验与路径
使用可交换的言据规则校验配置,并安全查询或更新嵌套值。
言据校验规则本身也是言据,可以与配置一起保存、交换和审阅。检查类型一次返回全部问题;符合规则只返回真假;断验在失败时抛出第一项结构化错误。
声明配置规则
下面的规则要求根值是据,且只允许一个包含主机和端口的服务属性:
据【
「类型」:「据」,
「必需」:列【「服务」】,
「允许额外」:假,
「属性」:据【
「服务」:据【
「类型」:「据」,
「必需」:列【「主机」,「端口」】,
「允许额外」:假,
「属性」:据【
「主机」:据【「类型」:「文」,「最短」:1】,
「端口」:据【「类型」:「数」,「最小」:1,「最大」:65535,「整数」:真】
】
】
】
】定 配置:典 为 言据.读取据(「config/app.yj」);
定 规则:典 为 言据.读取据(「config/app.schema.yj」);
定 各错:列 为 言据.检查类型(配置,规则);
若 长度(各错)大于 0 则
言 言据.美化(各错);
终规则字段
| 字段 | 值 | 约束 |
|---|---|---|
类型 | 类型名或类型名列 | 任意、据、列、文、数、理、空,列表示联合类型 |
枚举 | 列 | 值须与其中一项深层相同 |
最小 / 最大 | 数 | 数值闭区间 |
整数 | 理 | 为真时不得有小数部分 |
最短 / 最长 | 非负整数 | 文字、列或据的长度闭区间 |
项目 | 规则据 | 递归检查列中的每一项 |
必需 | 文字列 | 据必须具有的键 |
属性 | 键到规则据的据 | 按键递归检查 |
允许额外 | 理 | 为假时拒绝属性未声明的键 |
未知类型名、空联合类型或类型错误的规则字段产生YJ_SCHEMA,不会被误报成数据错误。校验错误按属性键稳定排序,每项包含代码、路径段列路径、显示文字路径文、消息、预期和实际。
路径查询
文字路径以全角斜线/分段。遇到据时路径段是文字键,遇到列时路径段是非负整数下标:
定 端口 为 言据.查询文(配置,「服务/端口」);
定 第二标签 为 言据.查询(配置,【「标签」,1】);
若 言据.路径存在文(配置,「服务/证书」)则
言 「已经配置证书」;
终
定 用户 为 言据.查询或(配置,【「服务」,「用户」】,「nobody」);键中的全角斜线写成\/,反斜线写成\\。路径分段把文字转换为段列,路径呈现执行反向转换。缺失键、越界下标和中途遇到标量都抛出YJ_PATH,并保留已经走到的数据路径。
不可变设定
设定会先深复制根值,再改写副本;输入配置及其嵌套容器保持不变。父路径必须已经存在,列下标等于列长度时表示追加。
定 新配置:典 为 言据.设定据(
配置,
【「服务」,「端口」】,
9090
);根值明确为据时优先使用设定据,它的静态返回类型是典。跨多个配置层组合数据时继续阅读数据合并与差异。