假设您在xTend中有以下代码:
class StackOverflowGenerator {
def generate()'''
«var counter = 0»
«FOR i : 0 ..<10»
Line Numnber: «i»
«counter = counter + 1»
«ENDFOR»
'''
}
Run Code Online (Sandbox Code Playgroud)
这将以以下格式生成输出:
Line Numnber: 0
1
Line Numnber: 1
2
Line Numnber: 2
3
Line Numnber: 3
...
Run Code Online (Sandbox Code Playgroud)
如何让xTend不打印仅使用计数器的行,只打印行号行,使得输出如下所示:
Line Numnber: 0
Line Numnber: 1
Line Numnber: 2
Line Numnber: 3
...
Run Code Online (Sandbox Code Playgroud)
在你的例子中没有用counter。因此很难猜测你的真正用例是什么。在大多数情况下,一些基于的计算i就足够了,消除counter完全消除。Orionll 的回答就指向了这个方向。
然而,如果counter无法计算而是i某种累积状态,那么最简单的方法就是将该状态提取到自定义类中并使用void方法修改该状态。在本例中生成的void setCounter(int)使用生成的方法。
class Example {\n def static void main(String[] args) {\n println(generate)\n }\n\n def static generate() '''\n \xc2\xabvar state = new State(0)\xc2\xbb\n \xc2\xabFOR i : 0 ..< 10\xc2\xbb\n Line Numnber: \xc2\xabi\xc2\xbb\n \xc2\xabstate.setCounter(state.counter + 1)\xc2\xbb\n \xc2\xabENDFOR\xc2\xbb\n '''\n\n}\n\nclass State {\n @Property\n var int counter\n\n new(int counter){\n this.counter = counter\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n