1

我有一个像#[[1,2,3,4] 这样的序列的列表。我想定义另一个列表,其中包含从 1 到 100 的数字序列。我尝试使用 #[[1..100]] 但这是不允许的。我如何在 mulesoft 中实现这一点?

4

2 回答 2

1

在 mule 4 和 dataweave 2中,..运算符现在用于不同的用例。对于范围使用to

#[1 to 100]

在 mule 3 和 dataweave 2 中,使用 .. 但如果您希望它作为内联表达式,则需要将其包装在dw函数中

    #[dw('[1..100]', 'application/java')]

或者使用 transform-message 组件进行非内联转换

于 2019-02-15T09:52:05.060 回答
0

尽管可以简单地使用范围运算符to来生成一大串数字。还有其他方法可以实现这一点,尤其是通过使用 lambda 变量转换函数。

要生成从 1 开始的数字,我们可以尝试如下所示的递归函数调用。

%dw 2.0
output application/json
var nums = (k: Number, arr: Array<Number>=[]) -> if(k > 0) nums(k-1, (arr + k)) else arr[-1 to 0]
---
nums(4)

根据开始和结束范围生成数字;试试下面

%dw 2.0
output application/json
var nums = (j, k: Number, arr: Array<Number>=[]) -> if(k > (j-1)) nums(j,k-1, (arr + k)) else arr[-1 to 0]
---
nums(7, 11)
于 2021-08-05T13:13:28.780 回答