Ant*_*t's 9 groovy jvm-languages
我遇到了这段代码:
n = args[0] as Long
[*n..1, n].any{ println ' '*it + '*'*(n - ~n - it*2) }
Run Code Online (Sandbox Code Playgroud)
它用于打印树形结构.像这样:
*
***
*****
*******
*
Run Code Online (Sandbox Code Playgroud)
(for n= 4)
any在这种情况下使用什么以及如何处理它?
Dav*_*ton 11
Q1a:*"解包"一个数组...创造一个范围.[]创建一个集合.
Q1b:将*n..1[4,3,2,1]解包到各个部分.
Q1c:[4,3,2,1,n]==[4,3,2,1,4]
Q2:我不知道为什么any在这里使用; each同样有效,在上下文中更有意义.any 确实循环通过该连接,所以println副作用发挥预期的作用.
通常any用于确定是否有任何集合元素符合标准,例如:
[*n..1,n].any { it > 10 } // Returns false, no elements are > 10
[*n..1,n].any { it == 3 } // Returns true, because at least one element is 3
Run Code Online (Sandbox Code Playgroud)
关闭的最后一个陈述用于确定每个项目是否符合标准.println返回null,因此any将返回false.该值未使用并被丢弃.
我能想到有人可能使用的唯一原因any是避免each在控制台中看到返回值.each返回原始集合.
| 归档时间: |
|
| 查看次数: |
8215 次 |
| 最近记录: |