将值连接到 groovy 中的列表

Concatenating values to List in groovy

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

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

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

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

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

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

您可以将列表添加到一起以串联。我更喜欢这个而不是'+'单个元素,因为所有东西都有一致的类型(List -> List -> List),所以如果你想添加的 'element' 本身就是一个集合,它仍然有效。

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]]