如何在Xtend的switch语句返回值中插入变量?
解决Xtend Switch中字符串变量插值的问题
我来帮你搞定这个Xtend里的字符串插值问题!你遇到的核心问题是用错了Xtend的字符串插值语法,还混淆了单双引号的作用,导致变量没法正确替换。
关键知识点先理清
Xtend的字符串规则很明确:
- 双引号字符串支持变量插值,会解析里面的表达式;
- 单引号字符串是纯文本,不会处理任何插值或表达式;
- 变量插值的正确写法是
${变量名},你用的«d.name»是Xtext模板语言的占位符语法,在普通Xtend代码里不生效。
正确的代码写法
当d.name = "Joe"时,把你的switch改成这样就能得到想要的结果:
switch l.name { case 'java': "mvn compile..../${d.name}/src/........." default: "bash..../${d.name}/src/....." }
为什么你之前的写法无效?
- 你用了单引号包裹字符串:单引号在Xtend里是原始字符串,不管里面写什么都会原样输出,不会解析变量;
- 错误的插值语法:
«d.name»不是普通Xtend代码的插值方式,只有在Xtext模板上下文里才会被识别,普通switch表达式里用它只会被当成普通文本。
最终效果
当l.name为'java'时,返回字符串:mvn compile..../Joe/src/.........
当l.name是其他值时,返回字符串:bash..../Joe/src/.....
内容的提问来源于stack exchange,提问作者YannickN.fr
相关产品推荐
相关产品推荐

