是否可以在Groovy的spread操作符中使用闭包。
例如:
def numbers = [4,8]
def numbersPlusTen = numbers*.{it -> it + 10}或者,扩展操作符只能在方法或属性上工作吗?
发布于 2013-12-30 14:11:10
不,扩展点运算符只适用于方法。但是,在您的示例中,您可以使用一些元编程来完成这项工作。
def numbers = [4,8]
java.lang.Integer.metaClass.something = {delegate + 10}
def numbersPlusTen = numbers*.something()发布于 2013-12-30 14:19:55
不然我就这么做
def numbers = [4,8]
def numbersPlusTen = numbers*.plus(10)如果我想加10. :)
发布于 2015-05-22 16:24:31
此外,还可以将List的each()方法用于更复杂的操作,而不仅仅是plus():
list.each({item -> item.callSomeMethod(item.getSomeProperty()+1)})因此,您使用隐式arg的示例应该是:
def numbersPlusTen = []
numbers.each({numbersPlusTen << it+10})在前面也可以使用扩展操作符:
def args = [4,8]
function f(int x, int y) {x+y}
f(*args)https://stackoverflow.com/questions/20841059
复制相似问题