【问题标题】:Sequence of numbers from 1 to 100 in a List in MulesoftMulesoft 列表中从 1 到 100 的数字序列
【发布时间】:2019-02-14 07:37:12
【问题描述】:

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

【问题讨论】:

    标签: mule-studio mule-component mule-esb mulesoft


    【解决方案1】:

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

    #[1 to 100]
    

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

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

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

    【讨论】:

    • 这对 Mule 3 不起作用。我该如何做这个 Mule 3?
    • Uodated for mule 3/dw1
    • 周围的方括号不会将范围包裹在一个额外的数组中吗?导致[[1,2,3,...]]
    • 对,我将它包装在一个数组中,因为问题示例将它们包装在数组中。但是,是的,这是多余的。我会编辑它。
    • 如何在 mule 3, dw 1 中做到这一点?我试过这个 #[dw('(1..100)', 'application/java')]" 我得到表达式的执行失败
    【解决方案2】:

    虽然可以简单地使用范围运算符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)
    

    【讨论】:

      猜你喜欢
      • 2011-02-20
      • 1970-01-01
      • 2021-07-06
      • 2023-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多