迭代任意长度的元组
我刚开始使用 Scala 并遇到了一个问题:
Scala 具有类型 Tuple1
、Tuple2
、...、Tuple22
。 Scalaquery 在迭代查询时返回元组。
我现在有一个给定的类(ZK 的 ListitemRenderer
),它接受 Object
并用行填充 gui 列表,每个行由一些单元格组成。但 ListitemRenderer
不是通用的。所以我的问题是我有一个 Object
“data”,它实际上是一个任意长度的元组,我必须迭代它来创建单元格(只需使用 data._1.toString
,...)。
由于不存在我不知道Tuple1-22
的超类型,我不能不能只做 data.asInstanceOf[Tuple].productIterator foreach {...}
我能做什么?
下面的答案告诉我,所有元组确实都有一个特征 - Product
- 提供所需的 foreach
函数。
I just started with Scala and ran into a problem:
Scala has the Types Tuple1
, Tuple2
, …, Tuple22
. Scalaquery returns tuples when iterating over queries.
I have now a given class (ZK’s ListitemRenderer
), which accepts Object
s and populates gui lists with rows, each consisting of some cells. But ListitemRenderer
isn’t generic. So my problem is that i have an Object
“data”, which really is a tuple of arbitrary length, which i have to iterate over to create the cells (simply with data._1.toString
, …).
Since there is no I didn’t know the supertype to Tuple1-22
, i can’t couldn’t just do data.asInstanceOf[Tuple].productIterator foreach {…}
What can i do?
Below Answer told me that there is indeed a Trait to all Tuples – Product
– providing the desired foreach
function.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
所有
TupleX
类都继承自Product
,后者定义了def ProductIterator : Iterator[Any]
。您可以调用它来迭代任何元组的所有元素。例如:
All
TupleX
classes inherit fromProduct
, which definesdef productIterator : Iterator[Any]
. You can call it to iterates through all elements of any tuple.For example: