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,它应该会给你足够的信息,让你达到目的。希望这对你有所帮助!