我知道大括号不用于在Groovy中初始化数组,但我注意到一个奇怪的事情.
当我初始化这样的数组时,为什么groovy不会给编译器错误.
String emailAddress = "test@gmail.com";
String [] var = {emailAddress};
println var[0];
Run Code Online (Sandbox Code Playgroud)
输出:com.test.examples.GroovyTest$_main_closure1@12e4860e
当我尝试这样声明时,我得到错误:
String [] var = {"a","b"};
Run Code Online (Sandbox Code Playgroud)
任何人都能解释一下吗?
当你这样做时:
String [] var = {emailAddress};
Run Code Online (Sandbox Code Playgroud)
这会创建一个Closure返回一个String emailAddress,然后将该闭包变成一个String数组(通过调用toString()它),就像你告诉它做的那样;-)
所以var等于['ConsoleScript0$_run_closure1@60fd82c1'](或类似,取决于你在哪里运行的东西)
当你这样做时:
String [] var = {"a","b"};
Run Code Online (Sandbox Code Playgroud)
右侧不是有效的Closure,因此脚本无法解析.
你想要的是:
String[] var = ['a', 'b']
Run Code Online (Sandbox Code Playgroud)
要么:
String[] var = [emailAddress]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1344 次 |
| 最近记录: |