xTend: How to stop a variable from printing in output?

xtend

Solution

In your example there is no use for `counter`. So it is hard to guess what your real usecase is. In most cases some calculation based on `i` is enought, eliminating `counter` completely. Orionll's answer is pointing in that direction.

If however `counter` is something which cannot be computed from `i` but is some accumulated state, then the simplest thing is to extract that state into a custom class and to modify this state using `void` methods. In this example the generated `void setCounter(int)` method is used.

class Example {
    def static void main(String[] args) {
        println(generate)
    }

    def static generate() '''
        «var state = new State(0)»
        «FOR i : 0 ..< 10»
            Line Numnber: «i»
            «state.setCounter(state.counter + 1)»
        «ENDFOR»
    '''

}

class State {
    @Property
    var int counter

    new(int counter){
        this.counter = counter
    }
}

Problem

Lets say you have the following code in xTend: ``` class StackOverflowGenerator { def generate()''' «var counter = 0» «FOR i : 0 ..<10» Line Numnber: «i» «counter = counter + 1» «ENDFOR» ''' } ``` This will generate output in the format: ``` Line Numnber: 0 1 Line Numnber: 1 2 Line Numnber: 2 3 Line Numnber: 3 ... ``` How do I get xTend to not print the line with just the counter and only print the Line Number line such that the output looks like: ``` Line Numnber: 0 Line Numnber: 1 Line Numnber: 2 Line Numnber: 3 ... ```

Original source