我有一个我无法改变的库类:
class MultiPart {
private val _parts: Seq[Part] = Seq.empty[Part])
def addHead(head: Head): MultiPart = Multipart(_parts :+ head)
def addPart(part: Part): MultiPart = Multipart(_parts :+ part)
}
在我的代码中,我想构建一个Multipart类的不可变对象,同时在for循环中进行迭代。 但我无法弄清楚如何做到这一点。 我目前的代码如下:
var mp: MultiPart = new MultiPart().addHead(head)
arrParts.foreach(x => mp.addPart(x))
有没有办法解决这个问题?
答案 0 :(得分:1)
看起来你应该使用foldLeft或foldRight(其他语言中的类似函数通常称为reduce)
arrParts.foldLeft(new MultiPart().addHead(head))(
(list, part) => {
list.addPart(part)
}
)
如果您感到困惑,可以在此页面上找到一些很好的示例:http://oldfashionedsoftware.com/2009/07/30/lots-and-lots-of-foldleft-examples/