Groovy字符串数组

Groovy字符串数组,groovy,Groovy,我知道在Groovy中不使用花括号来初始化数组,但我注意到一件奇怪的事情 为什么groovy在初始化这样的数组时不给出编译器错误 String emailAddress = "test@gmail.com"; String [] var = {emailAddress}; println var[0]; 输出:com.test.examples.GroovyTest$\u main_closure1@12e4860e 当我尝试这样声明时,我得到错误: String [] var = {"a

我知道在Groovy中不使用花括号来初始化数组,但我注意到一件奇怪的事情

为什么groovy在初始化这样的数组时不给出编译器错误

String emailAddress = "test@gmail.com";

String [] var = {emailAddress};

println var[0];
输出:com.test.examples.GroovyTest$\u main_closure1@12e4860e

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

String [] var = {"a","b"};
有人能解释一下吗?

当你这样做时:

String [] var = {emailAddress};
String [] var = {"a","b"};
这将创建一个
闭包
,该闭包返回一个字符串
电子邮件地址
,然后将该闭包填充到一个字符串数组中(通过对其调用
toString()
),正如您告诉它的那样;-)

所以
var
等于
['ConsoleScript0$\u run_closure1@60fd82c1']
(或类似,取决于运行内容的位置)

当您这样做时:

String [] var = {emailAddress};
String [] var = {"a","b"};
右侧不是有效的闭包,因此脚本无法解析

你想要的是:

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

当您这样做时:

String [] var = {emailAddress};
String [] var = {"a","b"};
这将创建一个
闭包
,该闭包返回一个字符串
电子邮件地址
,然后将该闭包填充到一个字符串数组中(通过对其调用
toString()
),正如您告诉它的那样;-)

所以
var
等于
['ConsoleScript0$\u run_closure1@60fd82c1']
(或类似,取决于运行内容的位置)

当您这样做时:

String [] var = {emailAddress};
String [] var = {"a","b"};
右侧不是有效的闭包,因此脚本无法解析

你想要的是:

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


谢谢…现在我明白了。谢谢…现在我明白了。