Groovy Tip 2 each
方法和break
在
Groovy
这样的动态语言中,闭包是其中的一个重要武器。而这些语言的开发者自然不会放弃使用这些武器,我们可以看到在
Groovy
语言的集合类中,广泛的使用了闭包。其中,
each
方法就是这样一个使用闭包的方法。
我们知道,在
Java
中,我们使用下面的语句对集合类对象进行遍历:
for
(
int
i=
0
;i<list.
size
();i++)
{
System.out.
println
(list.get(i))
}
而在
Groovy
语言中,我们使用
each
方法对集合类对象进行遍历:
list.
each
{
it ->
println
it
}
已经比起传统的
for
循环语句来说简单得多,但仍然可以更简单:
list.
each
{
println
it
}
这是因为在默认情况下,
each
方法的输入参数为
it
。
如果我们想通过
each
方法获取集合类对象中的元素位置时,应该这样使用:
list.eachWithIndex{
i,it ->
println
"port: $i value: $it"
}
下面,我们定义一个
List
对象:
def
list = [
1
,
5
,
6
,
2
,
6
,
7
]
现在,我想要判断上面的集合对象中是否大于
5
的元素:
def
have =
false
list.
each
{
if
(it>
5
)
{
have =
true
break
;
}
}
println
have
结果却发现该
break
语言编译不过去。怎么办?
def
have =
false
for
(it
in
list){
if
(it>
5
)
{
have =
true
break
;
}
}
println
have
不错,有时侯这些旧的语法还有是用途的。