JSONiq console.log 或打印
JSONiq console.log or print
是否可以在 JSONiq/Zorba 脚本中打印到控制台以进行调试?
例如
declare function utils:lowerCaseKey($obj as item) as item{
print($obj)
{|
for $k in distinct-values(keys( $obj ))
return { lower-case($k) : $obj.$k } (: note the ',' to create a sequence :)
|}
};
是:trace
功能就是为了这个目的。可以在需要查看输出的任何表达式上调用它,以及您选择的标签。
declare function utils:lowerCaseKey($obj as item) as item
{
{|
for $k in distinct-values(keys( trace($obj, "obj") ))
return { lower-case($k) : $obj.$k }
(: note the ',' to create a sequence :)
|}
};
这将导致输出如:
obj [1]: { "foo" : "bar" }
obj [2]: { "foo" : "bar2" }
此输出的确切发送位置(在命令行上,在日志文件中...)应记录在每个引擎中。 Zorba 默认输出到 stderr。
请注意,这是一种声明性语言,因此 trace
的行为与 print
不同。如果不需要,某些表达式可能会被优化掉,在这种情况下它不会生成任何跟踪。例如,
(1, trace(2, "foo"))[1]
可能不会生成跟踪。同样,跟踪生成的顺序可能取决于实现,因为 JSONiq 和 XQuery 一样,让每个引擎自由地评估表达式,只要它的结果符合规范。
是否可以在 JSONiq/Zorba 脚本中打印到控制台以进行调试?
例如
declare function utils:lowerCaseKey($obj as item) as item{
print($obj)
{|
for $k in distinct-values(keys( $obj ))
return { lower-case($k) : $obj.$k } (: note the ',' to create a sequence :)
|}
};
是:trace
功能就是为了这个目的。可以在需要查看输出的任何表达式上调用它,以及您选择的标签。
declare function utils:lowerCaseKey($obj as item) as item
{
{|
for $k in distinct-values(keys( trace($obj, "obj") ))
return { lower-case($k) : $obj.$k }
(: note the ',' to create a sequence :)
|}
};
这将导致输出如:
obj [1]: { "foo" : "bar" }
obj [2]: { "foo" : "bar2" }
此输出的确切发送位置(在命令行上,在日志文件中...)应记录在每个引擎中。 Zorba 默认输出到 stderr。
请注意,这是一种声明性语言,因此 trace
的行为与 print
不同。如果不需要,某些表达式可能会被优化掉,在这种情况下它不会生成任何跟踪。例如,
(1, trace(2, "foo"))[1]
可能不会生成跟踪。同样,跟踪生成的顺序可能取决于实现,因为 JSONiq 和 XQuery 一样,让每个引擎自由地评估表达式,只要它的结果符合规范。