Как вставить переменную в оператор 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"
Однако: не вкладывайте это слишком глубоко, иначе ваша голова взорвется;-)