如何在switch语句中插入变量返回Xtend?

时间:2018-04-26 12:46:44

标签: switch-statement 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

我无法/我不知道如何在返回的String中插入任何内容。 有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您可以在可以使用Xtend表达式的任何地方使用'''template string with «placeholderExpression» parts''' - 即使在«placeholderExpression»内也是如此。所以这应该有效:

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

然而:不要把它筑巢太深或者你的头会爆炸; - )

答案 1 :(得分:0)

我找到了解决方案:

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

所以添加 + 来连接返回的字符串的不同部分,因为我们在«...»内部不添加«»