这是我在Google Group中的问题的转贴。希望我能在这里得到一些回应。
我经常遇到这个问题。如果文本不为空,我想生成一行文本。如果为空,则不生成该行。插图模板:
命名空间@classSpec.getNamespace() @classSpec.getComment() 类@classSpec.getName() { ... }
如果@classSpec.getComment() 返回有意义的注释文本,结果看起来像
命名空间 com.example // 这是注释 我的班级{ ... }
但是如果没有评论,那就是
命名空间 com.example 我的班级{ ... }
注意到多余的空行了吗?我不想要这个。目前的解决方案是将模板编写为
命名空间@classSpec.getNamespace() @classSpec.getComment()class @classSpec.getName() { ... }
并确保 getComment() 将“\n”附加到返回值。这使得模板的可读性大大降低。另外,假设我需要在 for 循环中生成一个具有多个参数的函数。如果每个参数都需要模板代码的复杂逻辑,我需要像上面一样将它们全部写在一行中。否则,结果文件将具有类似的功能
函数我的函数( 字符串字符串参数, 整数 intParam, 长长参数 )
核心问题是,模板文件不仅包含脚本,还包含要写入输出的原始文本。对于脚本部分,我们需要换行符和缩进。我们希望像编译器通常做的那样修剪空间。但是对于原始文本,我们希望空格与文件中指定的完全相同。我觉得我们需要更多的原始文本控制机制来协调这两个部分。
针对这种情况,是否有一些特殊符号可以将输出中的多行视为单行?例如,如果我们可以写
命名空间@classSpec.getNamespace() @classSpec.getComment()\\ 类@classSpec.getName() { ... }
谢谢!