それはばかげた質問のように思えますが、私がインターネットで見つけたのはゴミだけでした。単にT
型の要素をリストList[T]
に追加することはできません。私はmyList ::= myElement
を試しましたが、それは奇妙なオブジェクトを作成し、myList.last
にアクセスすると常にリストの中に置かれた最初の要素を返します。
List(1,2,3) :+ 4
Results in List[Int] = List(1, 2, 3, 4)
この操作はO(n)の複雑さを持つことに注意してください。この操作が頻繁に必要な場合、または長いリストの場合は、別のデータ型(ListBufferなど)を使用することを検討してください。
それはあなたがそれをするべきではないからです(少なくとも不変のリストで)。もしあなたが本当に本当にデータ構造の最後に要素を追加する必要があり、このデータ構造が本当に本当にリストである必要があり、このリストが本当に本当に不変でなければならないなら、これをそれぞれ行ってください:
(4 :: List(1,2,3).reverse).reverse
またはその:
List(1,2,3) ::: List(4)
Scalaのリストは修正するようには設計されていません。実際、Scalaに要素を追加することはできません List
;これは、不変データ構造です。これは、Java Stringのようなものです。 Scalaで「要素をリストに追加する」ときに実際にすることは、既存のリストから新しいリストを作成することです。 (ソース)
このようなユースケースにリストを使用する代わりに、 ArrayBuffer
または ListBuffer
を使用することをお勧めします。これらのデータ構造は新しい要素を追加するように設計されています。
最後に、すべての操作が完了したら、バッファをリストに変換できます。次の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)
これは、答えの1つに似ていますが、方法が異なります。
scala> val x=List(1,2,3)
x: List[Int] = List(1, 2, 3)
scala> val y=x:::4::Nil
y: List[Int] = List(1, 2, 3, 4)
2つのリストまたはリストと配列を追加または追加することができます
Append:
var l = List(1,2,3)
l=l:+4
Result : 1 2 3 4
var ar = Array(4,5,6)
for(x<-ar)
{ l=l:+x}
l.foreach(println)
Result:1 2 3 4 5 6
前追加:
var l = List[Int]()
for(x<-ar)
{ l=x::l } //prepending
l.foreach(println)
Result:6 5 4 1 2 3