我是 StringTemplate4 的新手,可能我会问一些过于简单,不可能或愚蠢的事情,但我找不到任何其他信息。 到目前为止,我已经设置了这个最小的模板集:
define(name,arity) ::= "<name>(<vars(arity)>)."
vars(n) ::= "<n:var();separator=\", \">"
var(n) ::= "V<n>"
我希望得到:
pred(V1, V2, V3).
通过调用以下代码:
STGroup group = new STGroupFile(...);
ST st = group.getInstanceOf("define");
st.add("name", "pred");
st.add("arity", 3);
String result = st.render();
有可能吗?非常感谢提前。
答案 0 :(得分:0)
StringTemplate没有用于重复的内置运算符。相反,您需要进行迭代,如下面的问题所述。
Is there anything like Enumerable.Range(x,y) in Java?
请注意,由于StringTemplate中的当前限制,您需要传递Iterator<T>
而不是Iterable<T>
(解释器支持Collection<T>
,但不支持Iterable<T>
1}})。如果您想使用内置迭代变量i
或i0
,您还可以传递适当大小的new Object[n]
。