タプルの要素アクセス

Scalaのタプルのアクセスはこんな感じ。

val pair = (11, "test")
println(pair._1)
println(pair._2)

どうして1から始まるのか。そもそも括弧と番号でアクセスできないのは何故か。

答え

ご存知の通り配列やListの括弧でのアクセスは実際はapplyメソッドに置き換えられている。よって、型が不定のタプルでは同じ型を返すはずのapplyメソッドと相反してしまうから。
1から始まるのはHaskellとかの他の関数型言語が静的に型付けされたタプルは1から始まるという伝統があるからだそうだ。

> Scala スケーラブルプログラミング - 第03章 3.3より