当前位置:   article > 正文

Groovy的展开操作符(Spread Operator)*.和*_groovy * operator

groovy * operator

*.“操作符称之为:spread-dot操作,即“展开(点)”操作。比如

list*.member
  • 1

list.collect{ item -> item?.member } 
  • 1

是等效的。此处member可以是属性,也可以是get/set方法,甚至是一般的方法。如下例

class SpreadDotDemo { 
   def count 
}
def list = [new SpreadDotDemo(count:1),new SpreadDotDemo(count:2),new SpreadDotDemo(count:5) ] 
assert 8==list*.count.sum() 
assert 8==list.count.sum()//去掉*也可以的
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

*.”也是安全解引用操作符(Safe Dereference Operator也称为提领运算符),用以避免NullPointerException

def SpreadDotDemo demo
demo.count //将抛空指针异常
demo*.count //避免了null的检查,并返回null
  • 1
  • 2
  • 3

跟spead doc操作符相关的事spead操作(*),它可以看作是逗号分隔的list的下标操作符的逆操作

def getList(){ 
   return [1,2,3] 
}
def sum(a,b,c){ 
   return a + b + c 
}
assert 6 == sum(*list) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

看到了吧,示例中将list又展开为三个单独的元素

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/810380
推荐阅读
相关标签
  

闽ICP备14008679号