我有 2 个模块可以将代码转换为字符串, module1.jq 和 module2.jq
module1 转换具有这种形式的 obj1 的代码 { "code1":"254", "Object2s":[ {Object2}, {Object2} ] }
module2 转换具有这种形式的 obj2 的代码 { "code1":"574", "Object1s":[ {Object1}, {Object1} ] }
正如你所看到的,两个对象相互包含,所以在 module1 中它将是一个语句 包括“模块2”; 在 module2 中会有一条语句 包括“模块1”;
使用任一模块时,您都会遇到无限循环。
module3.jq 包括“模块1”;
如何阻止这种情况发生?
任何帮助将不胜感激
我尝试为每个模块定义唯一的变量类型,然后像 在 module1.jq 中 $模块_模块1 = 1; 如果 $module_module2 == 0 则包含“module2”;
在模块2中 $module_module2 = 1; 如果 $module_module1 == 0 则包含“module1”;
但是没有成功。
无法检测循环性是一个(众所周知的?)限制(或错误);也许您愿意对 C 和 Go 实现提出增强请求?
include 指令的语法不提供条件。
C 和 Go 实现之间也存在一些差异。 值得注意的是:
b-mod
并定义 a
(例如 def a: "a";
),并且 a-mod
和 b-mod
并调用 a
然后 gojq 按预期处理情况,但 C 实现给出了编译错误(运行 b.jq 会产生“a/0 未定义”)。
总而言之:至少现在, 除了提出增强请求和提交错误报告之外,似乎最好不要对模块系统抱有太多期望。