- List は不変オブジェクト (immutable object)
- Array は可変オブジェクト (mutable object)
Java で言う String(immutable object) と StringBuilder(mutable object) のような関係です。
リスト
リストの書き方には、List のコンストラクタを使うやり方と、中置オペレータ (infix operator) を使うやり方があります。
object Main extends Application { val c = List(1, 2, 3) println(c) //List(1, 2, 3)と表示 val f = 1 :: 2 :: 3 :: Nil println(f) //List(1, 2, 3)と表示 }
リストの要素の連結は、中置オペレータ「:::」にて行えます。
object Main extends Application { val c = List(1, 2) val d = List(3, 4) println(c:::d) // List(1, 2, 3, 4) println(1::2::d) // List(1, 2, 3, 4) println(c::d) // List(List(1, 2), 3, 4) }
「:::」や「::」は List のメソッドとして定義されています。
scala.List は固定長です。リストの連結などを行った場合、新しい scala.List のインスタンスが作成されることに注意する必要があります。
Listは以下の様にループ処理できます。
object Example008 extends Application { var list = List(0,1,2,3,4) for (l <- list) print(l + " ") list.foreach(l => print(l + " ")) }
配列
配列は scala.Array を使います。
object Main extends Application { val array = Array(1,2,3); array.foreach(e => print(e + " ")) // 1 2 3 }
要素へのアクセスは以下のような感じ。
object Main extends Application { val strArray = new Array[String](3) strArray(0) = "One " strArray(1) = "Two " // strArray(1) = 2 はコンパイルエラー! strArray.update(2, "Three") strArray.foreach(print) // One Two Three }