2017-10-31 4 views
0

にリストへの追加が、私は単に私は、次の試してみましたScalaはこのように雑用を作ることにした理由は、私は見当もつかないScalaの

var previousIds: List[String] = List() 

リストに項目を追加したい:

これらのインスタンスの一つ一つで
previousIds ::: List(dataListItem.id) 
previousIds :: List(dataListItem.id) 
previousIds :+ List(dataListItem.id) 
previousIds +: List(dataListItem.id) 
previousIds :+ dataListItem.id 
previousIds +: dataListItem.id 

、ラインが実行されますが、私は新しいリストを追加しようとすると、リストはまだ0アイテム

が含まれています:

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

リストが文字列である必要があるというエラーが発生します。私は、文字列

previousIds += dataListItem.id 

を追加すると、私はエラーを取得し、それが何らかの理由でリスト

にする必要があることを、動作する唯一のものは以下の通りです:

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

思われますリストに追加するのは簡単なオプションでなければならないからです。私はなぜ他に何も働いているのか分かりません。

私が行っているように新しいリストを作成することなく、すでに存在するscalaのリストにアイテムを追加するにはどうすればよいですか?

+0

私はあなたが最初のドキュメントの周り掘ってください変更可能なリスト – Pavel

+1

が必要と仮定します:https://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.htmlそれは、このような「です – Pavel

+0

Scalaは変更可能なもの(不本意なもの)と不変なもの(優先されるもの)の間の著しい区別をしているからです。 – jwvh

答えて

1

次のコードは、開始に役立ちます。あなたが可変のコレクションを扱っている 私の仮定:あなたは不変コレクションを扱っている場合には

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

buf += "test" 

buf.toList 

は、次のアプローチが役立つだろう:

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

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

モードの詳細についてはドキュメントを参照してください:

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

1

使用MutableList

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) 
関連する問題