タプル
複数の値を返したいけどコンテナとするクラスを定義するのがメンドイ、というときにタプルが使えます。
- タプルは複数の値を保持する組み込みのクラス(scala.Tuple2 .. etc)です。
- 要素数に応じてそれぞれ別のクラスが用意されているので、必要な要素数にあわせて対応するタプルを使います。
- 要素数が2であれば、scala.Tuple2を使います。
- Tuple22まで用意されています。
- 値の取り出しは、次の2とおりの方法で行えます。
- 「<タプルインスタンス>._<要素番号>」でアクセスする。
- パターンマッチングを使う。(Tupbleはcase classです。)
// タプルを返す関数。 // 商と剰余を返す。 def divmod(x: Int, y: Int) = { // 2つの値を持つタプルを返す。 new Tuple2[Int, Int](x / y, x % y) } // 実行。 var result = divmod( 10, 3 ) // 値は 「_<要素番号>」でアクセスできる。 println( "div : " + result._1 + " / mod : " + result._2 ) // もしくはパターンマッチングを使う。Tupleはcase class。 divmod( 10, 3 ) match { case Tuple2(div, mod) => println( "div : " + div + " / mod : " + mod ) }
執行結果です。
div : 3 / mod : 1 div : 3 / mod : 1