能否在JSONiq/Zorba脚本中通过控制台打印进行调试?
在JSONiq/Zorba中用控制台打印调试当然可行!
完全可以通过控制台打印来调试你的JSONiq脚本,不过在Zorba里得用它自带的打印函数,我给你理清楚细节:
首先,Zorba的打印函数属于http://zorba.io/modules/zorba命名空间,所以必须先声明这个命名空间才能使用,不然直接写print()会报错。你给出的示例代码可以修正成这样:
declare namespace zorba = "http://zorba.io/modules/zorba"; declare namespace utils = "http://example.com/utils"; (: 别忘了声明自定义的utils命名空间哦 :) declare function utils:lowerCaseKey($obj as item) as item { zorba:print($obj), (: 用逗号分隔打印语句和后续逻辑,保证函数返回的是转换后的对象 :) { for $k in distinct-values(keys($obj)) return { lower-case($k) : $obj.$k } } };
这里有两个关键点要注意:
- 必须声明
zorba命名空间,不然找不到打印函数 - 打印语句后面要加逗号,因为JSONiq是基于表达式的语言,这样才能让函数继续执行后面的对象转换逻辑,而不是把打印的结果作为返回值
另外,还有个更实用的调试函数zorba:trace(),它不仅能打印内容,还会返回输入的元素,非常适合插入到链式操作里,还能加自定义提示文本,让调试信息更清晰:
declare namespace zorba = "http://zorba.io/modules/zorba"; declare namespace utils = "http://example.com/utils"; declare function utils:lowerCaseKey($obj as item) as item { { for $k in distinct-values(keys(zorba:trace($obj, "当前处理的输入对象:"))) return { lower-case($k) : zorba:trace($obj.$k, "键 " || $k || " 对应的值:") } } };
当你用Zorba运行这个脚本时,所有打印/追踪的内容都会直接输出到控制台,帮你轻松观察变量值和代码执行流程。
内容的提问来源于stack exchange,提问作者Ben Flowers
相关产品推荐
相关产品推荐

