Xtend:向模板添加缩进

Xtend: add indentation to template

我想创建一个缩进 4 个空格的模板,如下所示:

def myMethod() '''
        for (int i =0; i!= size; ++i) {
            doSomething();
        }
    '''

但 Xtend 删除了 for() 和结束 '}' 之前的 4 个空格。如何添加未删除的缩进?

我遇到过类似的问题,Xtend 的模板系统可能很挑剔,但有解决方法。当使用类似于您展示的方法时,我通常发现我从模板的另一部分调用它,您可以在调用方法中创建缩进。例如:

def callingMethod() {'''
    for (1 to 10) {
        «myMethod()»  «««   This puts indents before everything within the method
    }
'''}
def myMethod() {'''
    for (int i =0; i!= size; ++i) {
        doSomething();
    }
'''}

另一种选择是在模板中明确添加空格,例如:

def myMethod() {'''
    «"    "»for (int i =0; i!= size; ++i) {
    «"    "»    doSomething();
    «"    "»}
'''}

或者我刚才发现的另一种方式

def myMethod() {'''
«""»
    for (int i =0; i!= size; ++i) {
        doSomething();
    }
«""»
'''}

我个人认为第一种方式尽可能简洁。可能还有其他方法可以实现这一点,这些只是我在自己的工作中发现的一些东西。