首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有可能将闭包传递给扩展运算符

有可能将闭包传递给扩展运算符
EN

Stack Overflow用户
提问于 2013-12-30 14:00:28
回答 3查看 394关注 0票数 3

是否可以在Groovy的spread操作符中使用闭包。

例如:

代码语言:javascript
复制
def numbers = [4,8]
def numbersPlusTen = numbers*.{it -> it + 10}

或者,扩展操作符只能在方法或属性上工作吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-30 14:11:10

不,扩展点运算符只适用于方法。但是,在您的示例中,您可以使用一些元编程来完成这项工作。

代码语言:javascript
复制
​def numbers = [4,8]
java.lang.Integer.metaClass.something = {delegate + 10}
def numbersPlusTen = numbers*.​something()​
票数 3
EN

Stack Overflow用户

发布于 2013-12-30 14:19:55

不然我就这么做

代码语言:javascript
复制
def numbers = [4,8]
def numbersPlusTen = numbers*.plus(10)

如果我想加10. :)

票数 4
EN

Stack Overflow用户

发布于 2015-05-22 16:24:31

此外,还可以将List的each()方法用于更复杂的操作,而不仅仅是plus():

代码语言:javascript
复制
list.each({item -> item.callSomeMethod(item.getSomeProperty()+1)})

因此,您使用隐式arg的示例应该是:

代码语言:javascript
复制
def numbersPlusTen = []
numbers.each({numbersPlusTen << it+10})

在前面也可以使用扩展操作符:

代码语言:javascript
复制
def args = [4,8]
function f(int x, int y) {x+y}
f(*args)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20841059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档