Как вставить переменную в оператор switch, возвращаемый с помощью Xtend?

С этим кодом Xtend:

«switch l.name {
case 'java': 'mvn compile..../«d.name»/src/.........'
default: 'bash..../«d.name»/src/......'
}»
and d.name = "Joe"

Я хочу вернуть эту форматированную строку со вставленной переменной:

mvn compile..../Joe/src/.........
bash..../Joe/src/.....

а не:

mvn compile..../«d.name»/src/.........
bash..../«d.name»/src/......
PS : case 'java': 'mvn compile..../'«d.name»'/src/.........'
doesn't work

Я не могу / я не знаю, как вставить что-либо в возвращаемую строку. Есть идеи?

2 ответа

Решение

Я нашел решение:

«switch l.name {
case 'java': 'mvn compile..../'+d.name+'/src/.........'
default: 'bash..../'+d.name+'/src/......'
}»
and d.name = Joe

вернется, как и ожидалось:

mvn compile..../Joe/src/.........
bash..../Joe/src/.....

Так добавь + объединить различные части возвращаемой строки и, как мы находимся внутри «...» не добавляйте «»

Вы можете использовать '''template string with «placeholderExpression» parts''' в любом месте, где можно использовать выражение Xtend - т.е. даже внутри «placeholderExpression», Так что это должно работать:

«switch l.name {
case 'java': '''mvn compile..../«d.name»/src/.........'''
default: '''bash..../«d.name»/src/......'''
}»
and d.name = "Joe"

Однако: не вкладывайте это слишком глубоко, иначе ваша голова взорвется;-)

Другие вопросы по тегам