Groovy 字符串数组
Groovy Array of Strings
我知道 Groovy 中不使用大括号来初始化数组,但我注意到一件奇怪的事情。
为什么 groovy 在我这样初始化数组时没有给出编译器错误。
String emailAddress = "test@gmail.com";
String [] var = {emailAddress};
println var[0];
输出:com.test.examples.GroovyTest$_main_closure1@12e4860e
当我尝试这样声明时出现错误:
String [] var = {"a","b"};
谁能解释一下?
当你这样做时:
String [] var = {emailAddress};
这会创建一个 Closure
,returns 一个字符串 emailAddress
,然后将该闭包塞入一个字符串数组(通过对其调用 toString()
),就像这样你告诉它做什么 ;-)
所以 var
等于 ['ConsoleScript0$_run_closure1@60fd82c1']
(或类似的,取决于你在哪里运行)
当你这样做时:
String [] var = {"a","b"};
右侧不是有效的闭包,因此脚本无法解析。
你想要的是:
String[] var = ['a', 'b']
或者:
String[] var = [emailAddress]
我知道 Groovy 中不使用大括号来初始化数组,但我注意到一件奇怪的事情。
为什么 groovy 在我这样初始化数组时没有给出编译器错误。
String emailAddress = "test@gmail.com";
String [] var = {emailAddress};
println var[0];
输出:com.test.examples.GroovyTest$_main_closure1@12e4860e
当我尝试这样声明时出现错误:
String [] var = {"a","b"};
谁能解释一下?
当你这样做时:
String [] var = {emailAddress};
这会创建一个 Closure
,returns 一个字符串 emailAddress
,然后将该闭包塞入一个字符串数组(通过对其调用 toString()
),就像这样你告诉它做什么 ;-)
所以 var
等于 ['ConsoleScript0$_run_closure1@60fd82c1']
(或类似的,取决于你在哪里运行)
当你这样做时:
String [] var = {"a","b"};
右侧不是有效的闭包,因此脚本无法解析。
你想要的是:
String[] var = ['a', 'b']
或者:
String[] var = [emailAddress]