我试图在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)
}
答案 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