読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

タプル

複数の値を返したいけどコンテナとするクラスを定義するのがメンドイ、というときにタプルが使えます。

  • タプルは複数の値を保持する組み込みのクラス(scala.Tuple2 .. etc)です。
  • 素数に応じてそれぞれ別のクラスが用意されているので、必要な要素数にあわせて対応するタプルを使います。
  • 値の取り出しは、次の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