Scala 无法将元素前置到列表中

Scala 无法将元素前置到列表中,scala,Scala,我有这样的数据结构: var index : List[(Int, List[Int])] = Nil 然后,在某个时刻,我想向索引中添加一些元素。我试着做: index(position)._2 = new_elem :: index(position)._2 但是编译器抱怨我正在对val进行重新分配 如果有帮助,我将通过以下代码行在索引中创建一个新位置: index = (p, Nil) :: index 我怎样才能克服这个问题 谢谢。您不能重新分配元组的一部分,只能重新分配整个元组。

我有这样的数据结构:

var index : List[(Int, List[Int])] = Nil
然后,在某个时刻,我想向索引中添加一些元素。我试着做:

index(position)._2 = new_elem :: index(position)._2
但是编译器抱怨我正在对val进行
重新分配

如果有帮助,我将通过以下代码行在索引中创建一个新位置:

index = (p, Nil) :: index
我怎样才能克服这个问题


谢谢。

您不能重新分配元组的一部分,只能重新分配整个元组。尝试:

index(position) = (index(position)._1, new_elem :: index(position)._2)


查看
\u 1
\u 2
val
s

您的问题:索引是一个变量(可以更改),但列表是一个不可变的数据结构,因此只能更改整个列表


您可以使用或。

使用ListBuffer而不是List。谢谢您的回答,这帮助我理解了这个问题。然而,现在我有了一个新的错误:
值更新不是List[(Int,List[Int])
的成员。有什么想法吗?正如其他人所说,您可以将外部列表(比如,保存元组的列表,而不是元组中的列表)升级为
可变列表
。这样您就可以访问它:(向下滚动到“更新”)。我喜欢Scala API,它应该会给你足够的信息,让你达到目的。希望这对你有所帮助!