我想将列表简化为字符串,以遵循特定的输出格式,这需要在元素之间使用竖线('|')。我这样做如下:
WITH ["three", "two", "one"] AS a RETURN reduce(acc=head(a), s in tail(a) | acc + "|" + s)
我的问题是由于数组的顺序错误而引起的:您看到它“计数”递减,而我想让它递增(在我的生产环境中,数组是图查询的中间结果,当然)。
所以我想我会做
WITH ["three", "two", "one"] AS a RETURN reduce(acc=head(a), s in REVERSE(tail(a)) | acc + "|" + s)
不幸的是,reverse
似乎返回了某种通用类型(any
)的集合,该集合未被字符串串联运算符接受:
Type mismatch: expected Float, Integer, String or List<String> but was Any (line 1, column 98 (offset: 97))
"WITH ["three", "two", "one"] AS a RETURN reduce(acc=head(a), s in reverse(tail(a)) | acc + "|" + s)"
^
因此,我想通过toString
将's'转换为字符串。但是,此函数将仅接受整数,浮点或布尔值,而不接受any
。
我该怎么办?我也接受没有转换的解决方案。我只希望能够将反向的字符串集合简化为单个字符串。
谢谢!
答案 0 :(得分:0)
您可以通过简单地反转连接顺序来避免使用REVERSE()
函数(即,使用s + "|" + acc
代替acc + "|" + s
):
WITH ["three", "two", "one"] AS a
RETURN REDUCE(acc=HEAD(a), s in TAIL(a) | s + "|" + acc )