JSONiq console.log или распечатать
Можно ли печатать на консоль для отладки в сценарии 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 :)
|}
};
1 ответ
Да: 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, оставляет каждому механизму свободу в том, как наилучшим образом оценить выражение, если его результаты соответствуют спецификации.