takafumi blog

日々の勉強メモ

Scala タプル

環境   Scala 2.11.6 CentOS7.0

Scalaスケーラブルプログラミング」(コップ本)メモ

読了:第04章まで

■ タプル

Scalaのタプルは

  • インデックスは1から始まる
  • 順序が存在する。
  • 要素は型が異なるものを使える  ※タプルとして型は決まる。例えば一度(Int, Int)と定義したタプルに(Int, String)という値を代入することはできない。

である。

▽初期化
scala> val pair1 = (99, "NinetyNine")
pair1: (Int, String) = (99,NinetyNine)

// こうも定義できる
scala> var pair2 = 100 -> "OneHundred"
pair2: (Int, String) = (100,OneHundred)
▽値の設定
// タプルの要素はvalで定義されており、再設定できない
scala> pair2._1 = 101
<console>:8: error: reassignment to val
       pair2._1 = 101

// 異なる要素のタプルを再代入も不可
scala> pair2 = ("OneHundred", 100)
<console>:8: error: type mismatch;
 found   : String("OneHundred")
 required: Int
       pair2 = ("OneHundred", 100)
                ^
<console>:8: error: type mismatch;
 found   : Int(100)
 required: String
       pair2 = ("OneHundred", 100)

// これはできる
scala> pair2 = (1, "One")
pair2: (Int, String) = (1,One)
▽値の取得
// タプルのインデックスは1から始まる
scala> pair1._1
res0: Int = 99

scala> pair1._2
res1: String = NinetyNine

// インデックス外の値はエラーになる
scala> pair1._3
<console>:9: error: value _3 is not a member of (Int, String)
              pair1._3

takafumi-s.hatenablog.com