我需要使用 StringTemplate4 生成以下类型的代码:
methodFoo0(Connection conn);
methodFoo1(Connection conn, int arg1);
methodFoo2(Connection conn, int arg1, int arg2);
etc.
“连接连接”部分始终存在,因此我只将方法名称和其余参数传递给我的 ST 模板。我的模板如下所示:
<methodName>(Connection conn, <args; separator=", ">);
这可行,但当根本没有参数时会产生一个额外的逗号(conn 除外):
methodFoo0(Connection conn,);
为了消除额外的逗号,我尝试使用if条件和长度ST4 函数,但我无法让它工作,尽管我尝试了如下各种组合:
<methodName>(Connection conn <if (length(fieldsInFind) \> 0)>,<else><endif><fieldsInFind; separator=", ">)
...以及其他都因一些与解析相关的错误而失败(输入不匹配)。
最后,我放弃了,而是根据预渲染逻辑将逗号参数传递给模板,它要么是“,”,要么是空字符串“”。