In mathematics and computer science, a tuple is an ordered list of elements. In set theory, an (ordered) n-tuple is a sequence (or ordered list) of n elements, where n is a positive integer.
So, for example, in Python the 2nd item of a tuple would be accessed via t[1].
In Scala, access is only possible via strange names t._2.
So the question is, why can’t I access data in tuples as Sequence or List if it is by definition? Is there some sort of idea or just yet not inspected?
Scala knows the arity of the tuples and is thus able to provide accessors like
_1,_2, etc., and produce a compile-time error if you select_3on a pair, for instance. Moreover, the type of those fields is exactly what the type used as parameter forTuple(e.g._3on aTuple3[Int, Double, Float]will return aFloat).If you want to access the nth element, you can write
tuple.productElement(n), but the return type of this can only beAny, so you lose the type information.