可以将闭包传递给扩展运算符

时间:2013-12-30 14:00:28

标签: groovy

是否可以使用带有Groovy的扩展运算符的闭包。

e.g。

def numbers = [4,8]
def numbersPlusTen = numbers*.{it -> it + 10}

或者,差价运算符只能处理方法或属性吗?

3 个答案:

答案 0 :(得分:4)

或者我会做

def numbers = [4,8]
def numbersPlusTen = numbers*.plus(10)

如果我想添加10.:)

答案 1 :(得分:3)

不,点差运算符仅适用于方法。但是在您的示例中,您可以使用一些元编程来实现此功能。

​def numbers = [4,8]
java.lang.Integer.metaClass.something = {delegate + 10}
def numbersPlusTen = numbers*.​something()​

答案 2 :(得分:0)

你也可以使用List的each()方法进行更复杂的操作,而不仅仅是加号():

def numbersPlusTen = []
numbers.each({numbersPlusTen << it+10})

所以隐式arg的例子是:

def args = [4,8]
function f(int x, int y) {x+y}
f(*args)

传播运营商也可以在前面使用:

msvcr120.dll