概要 2014/10/13
型が違っていてもよい2つ以上のデータを格納できるコンテナ型。格納するデータの数や型は固定。 C言語の構造体から各フィールドの名前がなくなったみたいなもの。
静的な型付けの言語でないと意味がないかもしれない。要素ごとの型も静的に決まる。
Java 2015/02/04
Javaにはタプルの機能はない。
Scalaのjarをクラスパスに含めておけば、scala.Tuple2
等をそのまま使うことはできる。書き方はScalaに比べたら面倒ではあるが。
scala.Tuple2<Integer, String> t = new scala.Tuple2<>(1, "abc");
Scala 2014/10/17
コンマ区切りの2つ以上の値を()
で囲めば、タプルになる。
関数の返り値としてタプルを使えば、 複数の結果を返すことができる。
タプルは実際には普通のオブジェクトで、
2要素であれば scala.Tuple2
、3要素であれば scala.Tuple3
というクラスのインスタンスである。
関数にタプルを1つだけ渡して呼び出すには、
()
はもともと関数呼び出しの引数を囲む記号なので、本来は二重にカッコで囲まないといけないのだが、省略してカッコを1組だけにしても大丈夫みたい。
Some(1, "abc") // => Some((1, "abc"))
これでAny
の引数1つだけの関数だと、実質は任意の数の引数を渡せることになる。
可変長引数の仕組みは別途あるのだが。
逆にこのカッコを省略できる機能でハマることもある。
Python 2014/10/17
Pythonでいうタプルは、リストがイミュータブルになっただけのようである。なので、Pythonのタプルはリストとほとんど使い方が同じ。