加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy的一些坑

发布时间:2020-12-14 16:48:43 所属栏目:大数据 来源:网络整理
导读:坑1:each闭包return陷阱 因为each使用闭包进行循环,所以在闭包中return相当于跳出了本次循环中的闭包,并不会终止循环。所以在each闭包中的return与for循环中的continue类似 class?TestEach?{?def?static?list?=?[1,2,3,4,5]??static?main(args){//??1//??

坑1:each闭包return陷阱

因为each使用闭包进行循环,所以在闭包中return相当于跳出了本次循环中的闭包,并不会终止循环。所以在each闭包中的return与for循环中的continue类似

class?TestEach?{
?def?static?list?=?[1,2,3,4,5]
?
?static?main(args){
//??1
//??2
//??3
//??4
//??5
??list.each?{
???println?it
???return
??}
??
//??------------------------------
??println?'-'*30
??
//??1
??for(int?i=0;i<list.size();i++){
???println?list[i]
???return
??}
?}
}

?

坑2:Map存值方式陷阱

如下面代码所示:map前两种赋值方式,都有问题。但是第二种方式保存的map输出是正常的,取值的时候却取不到。

打印key的class类型发现是GString,用String去取值就会取不到了。

class?TestMap?{
?def?static?map1?=?[:]
?def?static?map2?=?[:]
?def?static?map3?=?[:]
?def?static?map4?=?[:]
?def?static?map5?=?[:]
?
?static?main(args){
??String?val?=?'a'
??//Error
??map1?<<?[val:'b']
??//Error
??map2?<<?["$val":'b']
??
??map3["$val"]?=?'b'
??map4[val]?=?'b'
??map5."$val"?=?'b'
??
??//[val:b]
??println?map1
??//[a:b]
??println?map2
??//[a:b]
??println?map3
??//[a:b]
??println?map4
??//[a:b]
??println?map5
??
??println?'-'*30
??
??//null
??println?map1['a']
??//null
??println?map2['a']
??//b
??println?map3['a']
??//b
??println?map4['a']
??//b
??println?map5['a']
??map2.each?{k,v->
???//class?org.codehaus.groovy.runtime.GStringImpl
???println?k.class
??}
?}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读