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

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

发布时间:2020-12-14 17:03:33 所属栏目:大数据 来源:网络整理
导读:Groovy的spread-dot操作符 ? "*."操作符称之为:spread-dot操作,即“展开(点)”操作 。比如 list*.member 跟 list.collect{ item - item?.member }? 是等效的。此处member可以是属性,也可以是get/set方法,甚至是一般的方法。如下例 class SpreadDotDemo

Groovy的spread-dot操作符

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

list*.member

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

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

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

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

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

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

  1. def getList(){?
  1. return [1,2,3]?
  1. }
  2. def sum(a,b,c){?
  1. return a + b + c?
  1. }
  1. assert 6 == sum(*list)?

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

源文档 <http://agile-boy.iteye.com/blog/161057>

(编辑:李大同)

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

    推荐文章
      热点阅读