1. ホーム
  2. scala

[解決済み] ScalaのSeqへのアペンド

2022-02-08 12:55:56

質問

次のコードはSeqに追加するはずですが、空のリストを出力してしまいます、何が間違っているのでしょうか?

object AppendToSeq extends App{

    val x = Seq[Int]()

    x :+ 1
    x :+ 2

    println(x)

}

解決方法は?

x が作成した値は immutable Sequence であり、メソッド :+ は新しい Seq オブジェクトを返します。

というわけで、あなたのコードでは x は var (ミュータブル変数) で、追記するたびにその値が再代入されるようにしなければなりません ( :+ )操作を行うと、以下のようになります。

scala> var x = Seq[Int]()
x: Seq[Int] = List()

scala> x = x :+ 1
x: Seq[Int] = List(1)

scala> x = x :+ 2
x: Seq[Int] = List(1, 2)

scala> x
res2: Seq[Int] = List(1, 2)