Не совсем сравнимо в потоках мулов. В муле 4 потоки vars
являются переменными потока (так же, как flowVars
в муле3). Они относятся к событию и доступны для потока, который они определяют, и для любых потоков / подпотоков, на которые они ссылаются. Они не пересекают «транспортные барьеры», поэтому они не будут доступны в другом потоке, если они переходят через 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
}