【发布时间】:2012-11-13 18:15:59
【问题描述】:
如何使用地图从列表中删除特定元素(=多值属性)?例如,假设我想过滤掉给定列表中的所有 b:
<["a", "b", "c", "b"]: {<table.(it)>}; separator=",">
table ::= ["b":, default: key]
期望的结果是“a,c”,但实际结果是“a,,c”
问题是映射成功地将 b 转换为空值,但随后它们被包装在匿名模板 {} 中并成为非空值。所以他们也不会使用 strip() 函数。
所以问题是,是否可以通过稍微修改上面的代码来使用地图过滤列表?
更新
我找到了解决方法:
filter(it) ::= "<if(it)><it><endif>"
<["a", "b", "c", "b"]: {<table.(it)>}: filter(); separator=",">
这给出了我想要的结果:a,c
【问题讨论】:
标签: stringtemplate