1. ホーム
  2. scala

なぜScalaのタプルの構文は変わっているのか?

2023-11-08 02:36:24

質問

数学とコンピュータサイエンスでは、タプルは要素の順序付きリストです。集合論では、(順序付き)n-タプルはn個の要素のシーケンス(または順序付きリスト)であり、nは正の整数である。

したがって、例えばPythonではタプルの2番目の項目は次のようにアクセスします。 t[1] .

Scalaでは,奇妙な名前を使ってのみアクセスが可能です. t._2 .

そこで質問ですが、タプルのデータは定義上ではSequenceやListとしてアクセスできるのに、なぜできないのでしょうか?何らかのアイディアがあるのか、それともまだインスパイアされていないだけなのか?

どのように解決するのですか?

Scalaはタプルのアリティを知っているので、以下のようなアクセッサを提供することができます。 _1 , _2 などを選択すると、コンパイル時にエラーが発生します。 _3 を選択するとコンパイル時エラーが発生します。さらに,これらのフィールドの型は,まさに Tuple (のパラメータとして使われる型と同じです(例えば _3 の上に Tuple3[Int, Double, Float] が返されます。 Float ).

n番目の要素にアクセスしたい場合は、次のように書きます。 tuple.productElement(n) と書くことができますが、このときの戻り値は Any にしかならないので、型情報を失うことになります。