mulesoft中的块级变量等效于什么?

时间:2019-06-07 03:51:57

标签: mule-studio mulesoft

public static void method_one(){
    for(Integer i=0;i<10; i++){
        System.out.println('i');
    }
    //If we try to reference variable 'i', it will throw error.
}

我正在尝试在mulesoft 4中实现上述逻辑,如果在mulesoft中具有等效的块级变量,我会感到困惑吗?

有人可以建议

1 个答案:

答案 0 :(得分:1)

在ule子流中并没有真正可比的。在m子4中,流vars是流变量(与mule3中的flowVars相同)。它们是针对每个事件的,可用于定义的流以及它们引用的任何流/子流。它们不会越过“传输壁垒”,因此如果它们遇到http,vm,jms或您用于将流连接在一起的任何其他传输,将无法在其他流中使用。

即使在foreach范围内,如果设置了变量,它在下一次迭代中仍然可用。但是,foreach的每次迭代都会覆盖该变量。在foreach之后,只有最后一个评估值在foreach范围之外可用:

<foreach collection="#[[0,1,2,3]]">
    <set-variable variableName="i" value="#[(vars.i default 0) +1]" />
    <!-- logs 1 then 2 then 3 then 4 -->
    <logger level="INFO" message="Value of i: #[vars.i]" />
</foreach>

<!-- logs 4  -->
<logger level="INFO" message="Value of i: #[vars.i]" />

如果出于某种原因需要将其删除,则可以使用<remove-variable variableName="myVar" />

如果您正在谈论Dataweave,那么using运算符允许您在范围内使用变量:

%dw 2.0
output application/java
var myarray=[0,1,2,3]
---
{
    bla: myarray map using (i=$$) { 
        index: i //works
    },
    outofscope: i //wont work
}