StringTemplate的3:如何筛选列表?(StringTemplate 3: how to

2019-10-17 09:12发布

如何删除从使用地图的列表(=多值属性)特定元素? 例如,假设我想筛选出在给定列表中的所有B的:

<["a", "b", "c", "b"]: {<table.(it)>}; separator=",">
table ::= ["b":, default: key]

期望的结果将是“A,C”,但实际的结果是“一个,, C”
问题是,该地图成功地把B的为空值,但随后他们包裹在一个匿名模板{},成为非空值。 因此,他们不会消失与带()函数,无论是。

所以,问题是,这将是可以过滤使用地图通过稍微修改上面的代码清单?

更新

我已经找到了解决办法:

filter(it) ::= "<if(it)><it><endif>"
<["a", "b", "c", "b"]: {<table.(it)>}: filter(); separator=",">

这给了我想要的结果:A,C

Answer 1:

可能不希望在您的模板进行过滤,但尽管如此,可能是一个错误。

好吧,我检查出来。 这所以它认为它是一个项目给出了空不空。 ST对待false条件相同的方式:空不空。 我认为你需要在模型进行筛选。



文章来源: StringTemplate 3: how to filter a list?