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

语法 – 列表上的Groovy点表示法

发布时间:2020-12-14 16:28:18 所属栏目:大数据 来源:网络整理
导读:我不理解Groovy中以下构造的目的. 每当你有一个东西的集合,称之为项目,你可以只通过访问集合上的属性,即, items.prop == items.collect { it.prop } 这对我来说很奇怪,因为我认为第一个符号实际上意味着我想要访问集合对象本身的属性.例如,可能会发生真实的
我不理解Groovy中以下构造的目的.

每当你有一个东西的集合,称之为项目,你可以只通过访问集合上的属性,即,

items.prop == items.collect { it.prop }

这对我来说很奇怪,因为我认为第一个符号实际上意味着我想要访问集合对象本身的属性.例如,可能会发生真实的歧义案例

[[1,2,3],['cat','elephant']].size == 2

但根据之前的表示法,它应该等于[3,2].

此外,如果收集符号不够短,则有*. spread-dot运算符,意思是以这种方式使用:

[[1,'elephant']]*.size = [3,2]

What is the purpose of the ambiguous dot notation? Was it just added to save on character over *. or it has legitimate cases of use where *. would not work and collect would be cumbersome?

解决方法

我刚刚写了一篇名为 “Groovy Spread Operator Optional For Properties”的博客文章,潜入了这种情况下正在进行的事情.

简短的回答是,这是更多的语法糖,并最终调用到DefaultGroovyMethods.getAt(Collection,String).

它没有任何巨大的优势,但它可以使一些DSL更容易编写,因为它们可以正确操作,无论对象是集合还是单个对象.

(编辑:李大同)

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

    推荐文章
      热点阅读