在Scala中构造不可变对象时进行迭代
我有一个无法更改的库类:在Scala中构造不可变对象时进行迭代,scala,for-loop,immutability,Scala,For Loop,Immutability,我有一个无法更改的库类: 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类的不可变对象,同时在
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))
有没有办法解决这个问题?看起来应该使用foldLeft或foldRight(其他语言中类似的函数通常称为reduce)
如果您感到困惑,本页上有一些很好的例子:您似乎想要一个
foldLeft
/foldRight
。如果您想要它不可变,为什么不使用newSeq[Part]
创建一个新的多部分
?
arrParts.foldLeft(new MultiPart().addHead(head))(
(list, part) => {
list.addPart(part)
}
)