Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将值连接到groovy中的列表_Groovy - Fatal编程技术网

将值连接到groovy中的列表

将值连接到groovy中的列表,groovy,Groovy,我在groovy中有一个列表a=[1,2]。我将此作为参数传递给一个方法,并执行a.add(3)。这是在末尾添加元素。但是其他人正在其他地方访问同一阵列,我不希望他们看到我对该阵列所做的任何更改。我知道数组只能作为引用传递(如果我错了,请纠正我) 然而,在JavaScript中,我们有类似于arr=[1,2]和arr.concat(3)-这将返回一个数组[1,2,3],但是如果我们打印arr,它仍然打印[1,2] 请告诉我是否有任何方法可以在groovy中实现这一点。您可以使用plus,因为它会

我在groovy中有一个列表
a=[1,2]
。我将此作为参数传递给一个方法,并执行
a.add(3)
。这是在末尾添加元素。但是其他人正在其他地方访问同一阵列,我不希望他们看到我对该阵列所做的任何更改。我知道数组只能作为引用传递(如果我错了,请纠正我)

然而,在JavaScript中,我们有类似于
arr=[1,2]
arr.concat(3)
-这将返回一个数组
[1,2,3]
,但是如果我们打印
arr
,它仍然打印
[1,2]


请告诉我是否有任何方法可以在groovy中实现这一点。

您可以使用plus,因为它会创建一个新列表:

def a = [ 1, 2 ]
def b = a + 3

assert a == [1, 2]
assert b == [1, 2, 3]

您可以将列表添加到一起以连接。我更喜欢使用“+”单个元素,因为所有元素都有一致的类型(List->List->List),所以如果要添加的“元素”本身就是一个集合,它仍然可以工作

def a = [ 1, 2 ]
def b = a + [3]

assert a == [1, 2]
assert b == [1, 2, 3]

def c = a + [[3, 4]]
assert c == [1, 2, [3, 4]]

a=[1,2]不创建数组,它创建一个列表,特别是java.util.ArrayList(令人困惑,因为Ruby中类似的东西称为数组,但Groovy和java中还有其他东西称为数组)@NathanHughes Question updated;-)