0

我有两个由字符串组成的列表,它们都是不可变的:

def list1 = [ "A", "B", "C" ]
list2 = ["D", "E", F"]

清单 2 由我制作的自定义函数返回。有没有办法获取这两个不可变列表并将它们的两个元素与注入结合起来?我尝试了许多组合但没有成功。我已经为此进行了广泛的搜索。我无法将其更改为可变列表。我知道简单地组合两个列表然后使它们不可变会容易得多,但是唉,这不是我的目标。

以下是所需的输出:

[ "A", "B", "C", "D", "E", F"]

这里的解决方案将用于解决更大的问题。我只是将其简化为基本情况。

谢谢你。

编辑:我必须使用注入方法。我知道我可以简单地使用 + 或通过循环遍历每个列表以获得所需的结果。这仅限于在 Groovy 中使用 .inject。

4

1 回答 1

1
//Set as Immutable
def list1 = ["A", "B", "C"].asImmutable() 
def list2 = ["D", "E", "F"].asImmutable() 

//Supports Immutablity
try {list1 << 'Z'} catch(e){assert e instanceof UnsupportedOperationException} 
try {list2 << 'Z'} catch(e){assert e instanceof UnsupportedOperationException}

//Desired result using "inject"
def result = list2.inject(list1){init, val -> [init] << val}.flatten()
assert result == ['A', 'B', 'C', 'D', 'E', 'F'] 

//Immutable Test
assert list1 == ["A", "B", "C"] 
assert list2 == ["D", "E", "F"]

//Supports Immutablity after operation
try {list1 << 'Z'} catch(e){assert e instanceof UnsupportedOperationException}
try {list2 << 'Z'} catch(e){assert e instanceof UnsupportedOperationException}
于 2013-10-10T04:31:48.000 回答