1. ホーム
  2. scala

[解決済み] scalaで空リストを宣言し、文字列を追加するには?

2023-05-15 23:55:50

質問

このようなコードを持っています。

val dm  = List[String]()
val dk = List[Map[String,Object]]()

.....

dm.add("text")
dk.add(Map("1" -> "ok"))

が、ランタイム java.lang.UnsupportedOperationException をスローします。

空のリストや空のマップを宣言し、コード内のどこかでそれらを埋める必要があります。

どのように解決するのですか?

Scalaのリストはデフォルトではimmutableです。要素を追加することはできませんが、新しい要素を前に追加することで、新しいリストを形成することができます。これは 新しい リストなので、参照を再割り当てする必要があります(そのため、valを使用することはできません)。

var dm  = List[String]()
var dk = List[Map[String,AnyRef]]()

.....

dm = "text" :: dm
dk = Map(1 -> "ok") :: dk

演算子 :: は新しいリストを作成します。より短い構文を使うこともできます。

dm ::= "text" 
dk ::= Map(1 -> "ok")

NBです。 scala では Object ではなく Any , AnyRef または AnyVal .