2013-08-29 89 views
1

我有這樣的數據結構:不能預先考慮元素列表

var index : List[(Int, List[Int])] = Nil 

然後,在某些時候,我想添加一些元素添加到我的索引。我試着做:

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

但編譯器抱怨說我正在做一個reassignment to val

index = (p, Nil) :: index 

我怎樣才能解決這個問題:

如果能幫上忙,我用下面的代碼創建一個新的位置進入指數?

謝謝。

+2

使用ListBuffer而不是List。 – rocky3000

回答

1

您的問題:該指數是一個變量(可以改變),但名單是一個不可變的數據結構,所以只有整個列表可以改變。可以使用MutableListMap

2

你不能重新分配一個元組的一部分,而只能重新分配整個事物。嘗試:

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

Scala API Tuple2

請參閱_1_2val小號

+0

感謝您的回答,這幫助我解決了問題。 Howerever現在我有這個新的錯誤:'值更新不是List [(Int,List [Int])''的成員。任何想法? – Aslan986

+0

正如其他人所說的,你可以將外部列表(比如,保存元組的元素,而不是元組內的元素)升級到'MutableList'。這使您可以訪問:http://www.scala-lang.org/api/current/index.html#scala.collection.mutable.MutableList (向下滾動到「更新」)。我喜歡Scala API,它應該給你足夠的信息去那裏。希望這可以幫助! – Mattsjo