Groovy 为什么这个闭包不能在int范围的每个元素上执行?

Groovy 为什么这个闭包不能在int范围的每个元素上执行?,groovy,Groovy,这是我的密码: def myclosey = {items -> items + 1} myclosey(1..3); 我希望将1添加到内部消息中的每个元素。相反,1只是添加到intrange的末尾, 所以输出是 [1,2,3,1] 为什么?是一个列表。因此,加号操作符将一个元素附加到列表中。正在对范围本身而不是范围的每个元素调用闭包 如果要向所有元素添加一个元素,可以执行(1..3).收集{it+1},或者使用@dmahpatro建议的语法。是一个列表。因此,加号操作符将一

这是我的密码:

def myclosey = {items -> 
    items + 1}
myclosey(1..3);
我希望将1添加到内部消息中的每个元素。相反,1只是添加到intrange的末尾, 所以输出是

[1,2,3,1]
为什么?

是一个列表。因此,加号操作符将一个元素附加到列表中。正在对范围本身而不是范围的每个元素调用闭包

如果要向所有元素添加一个元素,可以执行
(1..3).收集{it+1}
,或者使用@dmahpatro建议的语法。

是一个列表。因此,加号操作符将一个元素附加到列表中。正在对范围本身而不是范围的每个元素调用闭包


如果要将一个元素添加到所有元素中,可以执行
(1..3).收集{it+1}
,或者使用@dmahpatro建议的语法。

因为要将一个范围传递到闭包,所以必须执行以下操作:

def myclosey = {items -> 
    items*.plus(1) //Spread on the range
}
assert myclosey(1..3) == [2, 3, 4]

因为您要在一个范围内传递到闭包,所以您必须执行以下操作:

def myclosey = {items -> 
    items*.plus(1) //Spread on the range
}
assert myclosey(1..3) == [2, 3, 4]

我给你的答案加了一个参考。我给你的答案加了一个参考。