功能方法建议而不是使用mutablelist

时间:2015-02-07 16:52:47

标签: scala immutability

我试图在scala中解决breaktherope对cod cod的挑战,但我无法提出功能性解决方案。下面的代码段是我被困的地方的一个例子。 两个列表元素都必须在整个程序中进行更改。我们可以用map或者那样解决这个问题吗?

var A = MutableList(5, 3, 6, 3, 3)
var B = MutableList(2, 3, 1, 1, 2)

for (i <- 0 to N){
    A(i) -= B(i)
}

2 个答案:

答案 0 :(得分:3)

功能解决方案将返回新列表而不是A的突变。

val result = A.zip(B).map { case (a, b) => a - b}

如果A,B是不可变的,那么列表也是不可变的。如果A,B是可变的,您可以使用.toList

将结果转换为不可变列表

答案 1 :(得分:0)

对Maxim的回答的一个小改进是使用scala进行理解,只是为了获得更具说明性的解决方案:

val result = for {
  (a, b) <- A zip B
} yield a - b