我有以下代码:
public class TestGr
{
static String aaa = "wwww";
public static void main(args)
{
println "["+getAAA()+"]";
println "[" + getBBB() +"]";
}
static String getAAA()
{
return ""
+ "${aaa}"
}
static String getBBB()
{
return "" + "${aaa}"
}
}
此代码的输出为:
[]
[wwww]
我不明白为什么在第一次通话中我得到一个空字符串。有人知道为什么换行会改变函数的输出吗?
答案 0 :(得分:3)
这是解析groovy的方式。由于语句末尾的分号是可选的,因此新行有时会有所不同。
getAAA()被解析为两个语句,如下所示:
static String getAAA() {
return "";
+"${aaa}";
}
即使一元+
运算符对字符串arg没有意义,但由于其动态特性,groovy无法捕获它。字符串上可能有一个postive()
元方法可以使其有效。
编辑:
为了更好地了解正在发生的事情,启动groovyConsole
并加载脚本。从“脚本”菜单中选择“检查AST”。你会看到这样的事情: