Es gibt verschiedene Möglichkeiten, eine unveränderliche Liste in Scala zu erstellen (siehe Beispielcode unten). Sie können einen veränderlichen ListBuffer verwenden, eine var
Liste erstellen und ändern, eine rekursive Schwanzmethode verwenden und wahrscheinlich andere, die ich nicht kenne.
Instinktiv verwende ich den ListBuffer, aber ich habe keinen guten Grund dafür. Gibt es eine bevorzugte oder idiomatische Methode zum Erstellen einer Liste oder gibt es Situationen, die für eine Methode gegenüber einer anderen am besten geeignet sind?
import scala.collection.mutable.ListBuffer
// THESE are all the same as: 0 to 3 toList.
def listTestA() ={
var list:List[Int] = Nil
for(i <- 0 to 3)
list = list ::: List(i)
list
}
def listTestB() ={
val list = new ListBuffer[Int]()
for (i <- 0 to 3)
list += i
list.toList
}
def listTestC() ={
def _add(l:List[Int], i:Int):List[Int] = i match {
case 3 => l ::: List(3)
case _ => _add(l ::: List(i), i +1)
}
_add(Nil, 0)
}
What you DON'T do is use a List and append to it
Liegt das daran, dass eine neue Liste erstellt wird? Während bei Verwendung einer Voranstelloperation keine neue Liste erstellt wird?