2017-10-31 2 views
0

Ich habe keine Ahnung, warum Scala dieses solch eine lästige Pflicht zu machen entschieden, aber ich will einfach ein Element zu einer Liste hinzuzufügenAnfügen einer Liste in Scala

var previousIds: List[String] = List() 

Ich habe versucht, die folgenden:

previousIds ::: List(dataListItem.id) 
previousIds :: List(dataListItem.id) 
previousIds :+ List(dataListItem.id) 
previousIds +: List(dataListItem.id) 
previousIds :+ dataListItem.id 
previousIds +: dataListItem.id 

In jedem dieser Fälle wird die Linie laufen, aber die Liste wird nach wie vor enthalten 0 Produkte

Wenn ich versuche, eine neue Liste hinzuzufügen:

val list = List[String](dataListItem.id) 
previousIds += list 

Ich bekomme einen Fehler, dass die Liste eine Zeichenfolge sein muss. Wenn ich eine Zeichenfolge hinzufügen

previousIds += dataListItem.id 

ich einen Fehler, dass es aus irgendeinem Grund

eine Liste sein muss, ist die einzige Sache, die funktioniert ist die folgende:

previousIds :::= List[String](dataListItem.id) 

die scheint wirklich exzessiv, da das Hinzufügen zu einer Liste eine triviale Option sein sollte. Ich habe keine Ahnung, warum sonst nichts funktioniert.

Wie fügen Sie ein Element zu einer Liste in scala hinzu (die bereits existiert), ohne eine neue Liste zu erstellen, wie ich es tue?

+0

Ich gehe davon würden Sie – Pavel

+1

Bitte wühlen Dokumentation wandelbar Liste benötigen: https://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html – Pavel

+0

Es ist „ein solches "weil Scala eine deutliche Unterscheidung zwischen mutabel (entmutigt) und unveränderlich (bevorzugt) macht. – jwvh

Antwort

1

Der nächste Code sollte Ihnen für den Anfang helfen. Meine Vermutung Sie mit wandelbaren Sammlungen beschäftigen:

val buf = scala.collection.mutable.ListBuffer.empty[String] 

buf += "test" 

buf.toList 

Falls Sie mit unveränderlichen Sammlungen beschäftigen würde nächster Ansatz helfen:

val previousIds = List[String]("A", "TestB") 

val newList = previousIds :: List("TestB") 

zur Dokumentation Bitte Modus Details:

http://www.scala-lang.org/api/current/scala/collection/immutable/List.html

1

Verwendung MutableList

erste
scala> var a = scala.collection.mutable.MutableList[String]() 
a: scala.collection.mutable.MutableList[String] = MutableList() 

scala> a += "s" 
res0: scala.collection.mutable.MutableList[String] = MutableList(s) 

scala> a :+= "s" 

scala> a 
res1: scala.collection.mutable.MutableList[String] = MutableList(s, s) 
Verwandte Themen