如何添加到 scala.collection.mutable.Buffer
How to add to scala.collection.mutable.Buffer
在scala中,我想把一个Seq的内容累加到一个Buffer中,避免每次添加都构造一个新的Buffer。我做了这样的事情:
import scala.collection.mutable.Buffer
var sum = Buffer[Double](1.0,2.0)
sum.append(3.0)
val add = Seq[Double](4.0,5.0,6.0)
for( i <- 0 until sum.size ) sum.update(i,sum(i)+add(i))
有没有办法避免for循环。我用 zip 尝试过的任何事情都以重新分配给 val 错误结束。
试试这个:
sum = add.zip(sum).map(item => item._1+item._2).toBuffer
如果您想避免创建新的 Buffer
,zip
没有太大帮助,但您可以使用 zipWithIndex
来确定应该添加当前索引的索引元素,和 view
以避免在内存中创建序列:
add.view.zipWithIndex.foreach {
case (value, index) => sum(index) += value
}
在scala中,我想把一个Seq的内容累加到一个Buffer中,避免每次添加都构造一个新的Buffer。我做了这样的事情:
import scala.collection.mutable.Buffer
var sum = Buffer[Double](1.0,2.0)
sum.append(3.0)
val add = Seq[Double](4.0,5.0,6.0)
for( i <- 0 until sum.size ) sum.update(i,sum(i)+add(i))
有没有办法避免for循环。我用 zip 尝试过的任何事情都以重新分配给 val 错误结束。
试试这个:
sum = add.zip(sum).map(item => item._1+item._2).toBuffer
Buffer
,zip
没有太大帮助,但您可以使用 zipWithIndex
来确定应该添加当前索引的索引元素,和 view
以避免在内存中创建序列:
add.view.zipWithIndex.foreach {
case (value, index) => sum(index) += value
}