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

语法 – 列表上的Groovy点表示法,第1张

概述我不理解Groovy中以下构造的目的. 每当你有一个东西的集合,称之为项目,你可以只通过访问集合上的属性,即,, items.prop == items.collect { it.prop } 这对我来说很奇怪,因为我认为第一个符号实际上意味着我想要访问集合对象本身的属性.例如,可能会发生真实的歧义案例 [[1,2,3],['cat', 'elephant']].size == 2 但根据之前的表 我不理解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更容易编写,因为它们可以正确 *** 作,无论对象是集合还是单个对象.

总结

以上是内存溢出为你收集整理的语法 – 列表上的Groovy点表示法全部内容,希望文章能够帮你解决语法 – 列表上的Groovy点表示法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1231555.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存