As listas no Scala não foram projetadas para serem modificadas. De fato, você não pode adicionar elementos a um Scala List
; é uma estrutura de dados imutável , como uma Java String. O que você realmente faz quando "adiciona um elemento a uma lista" no Scala é criar uma nova lista a partir de uma lista existente . (Fonte)
Em vez de usar listas para esses casos de uso, sugiro usar um ArrayBuffer
ou a ListBuffer
. Essas estruturas de dados são projetadas para adicionar novos elementos.
Finalmente, depois que todas as suas operações estiverem concluídas, o buffer poderá ser convertido em uma lista. Veja o seguinte exemplo REPL:
scala> import scala.collection.mutable.ListBuffer
import scala.collection.mutable.ListBuffer
scala> var fruits = new ListBuffer[String]()
fruits: scala.collection.mutable.ListBuffer[String] = ListBuffer()
scala> fruits += "Apple"
res0: scala.collection.mutable.ListBuffer[String] = ListBuffer(Apple)
scala> fruits += "Banana"
res1: scala.collection.mutable.ListBuffer[String] = ListBuffer(Apple, Banana)
scala> fruits += "Orange"
res2: scala.collection.mutable.ListBuffer[String] = ListBuffer(Apple, Banana, Orange)
scala> val fruitsList = fruits.toList
fruitsList: List[String] = List(Apple, Banana, Orange)
List
é convertido em umListBuffer
, o elemento é anexado, eaListBuffer
volta convertido (muito bem comoString
eStringBuilder
em Java), mas isso é apenas um palpite.