eclipse 如何在Acceleo中创建可变序列?

hc8w905p  于 2023-03-22  发布在  Eclipse
关注(0)|答案(2)|浏览(110)

所以我有一个名为vizAttrs的可视化属性序列。这是我实际想要做的:

[for (va: VisualizationAttribute | dataBinding2.eContents(VisualizationAttribute))]
[vizAttrs = vizAttrs->excluding(va) /]
[/for]

如果我在循环后检查vizAttrs的元素,它仍然包含我希望被排除的va。但是如果我尝试这样的操作:

[for (va: VisualizationAttribute | dataBinding2.eContents(VisualizationAttribute))]
[let newVizAttrs:Sequence(VisualizationAttribute) = vizAttrs->excluding(va) /]
[/for]

当我检查它时,newVizAttrs确实有预期的值,这排除了va元素。但是newVizAttrs不能用于for循环的下一次迭代。我假设这可能是因为vizAttrs是不可变的。有什么方法可以使vizAttrs,或序列/集合,在Acceleo中可变吗?

ars1skjm

ars1skjm1#

我发现Acceleo中的所有变量都是最终结果。https://stackoverflow.com/a/12003064/12466641
在我的情况下似乎不可能对vizAttrs进行突变。我将寻找一个变通方法。

eqfvzcg8

eqfvzcg82#

如果我能很好地理解您要做的事情,您希望从vizAttr中删除dataBinding2中包含的所有VisualizationAttribute示例。
你不需要在这里改变任何东西,你可以从vizAttr中拒绝它们。

vizAttrs->reject(e | dataBinding2.eContents(VisualizationAttribute)->includes(e))

相关问题