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 ??} ?} } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |