问题描述
在数学和计算机科学中,元组是元素的有序列表.在集合论中,(有序)n 元组是 n 个元素的序列(或有序列表),其中 n 是一个正整数.
因此,例如,在 Python 中,元组的第二项将通过 t[1]
访问.
So, for example, in Python the 2nd item of a tuple would be accessed via t[1]
.
在 Scala 中,只能通过奇怪的名称进行访问t._2
.
In Scala, access is only possible via strange names t._2
.
所以问题是,如果按照定义,我为什么不能以 Sequence 或 List 的形式访问元组中的数据?是否有某种想法或尚未检查?
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 知道元组的数量,因此能够提供像 _1
、_2
、例如,如果您选择 _3
对,则会产生编译时错误.此外,这些字段的类型正是用作 Tuple
参数的类型(例如 Tuple3[Int, Double, Float]
上的 _3
> 将返回一个 Float
).
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 _3
on a pair, for instance. Moreover, the type of those fields is exactly what the type used as parameter for Tuple
(e.g. _3
on a Tuple3[Int, Double, Float]
will return a Float
).
如果要访问第n个元素,可以写tuple.productElement(n)
,但是this的返回类型只能是Any
,这样就输了类型信息.
If you want to access the nth element, you can write tuple.productElement(n)
, but the return type of this can only be Any
, so you lose the type information.
这篇关于为什么 Scala 的元组语法如此不寻常?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!