Groovy字符串数组

时间:2015-06-29 16:12:07

标签: groovy

我知道大括号不是用于在Groovy中初始化数组,但我注意到了一件奇怪的事情。

为什么当我初始化这样的数组时,groovy没有给出编译器错误。

String emailAddress = "test@gmail.com";

String [] var = {emailAddress};

println var[0];

输出:com.test.examples.GroovyTest$_main_closure1@12e4860e

当我尝试这样声明时,我收到错误:

String [] var = {"a","b"};

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:6)

当你这样做时:

String [] var = {emailAddress};

创建一个返回字符串Closure的{​​{1}},然后将该闭包变成一个String数组(通过调用它上面的emailAddress),就像你告诉它做的那样; - )

所以toString()等于var(或类似的,取决于你在哪里运行)

当你这样做时:

['ConsoleScript0$_run_closure1@60fd82c1']

右侧不是有效的Closure,因此脚本无法解析。

你想要的是:

String [] var = {"a","b"};

或者:

String[] var = ['a', 'b']