Как вставить переменную в оператор switch, возвращаемый с помощью Xtend? - PullRequest
0 голосов
/ 26 апреля 2018

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

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

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

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 ]

0 голосов
/ 05 мая 2018

Вы можете использовать '''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"

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

0 голосов
/ 26 апреля 2018

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

«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/.....

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

...