迭代任意长度的元组

发布于 2024-11-09 04:45:23 字数 672 浏览 0 评论 0原文

我刚开始使用 Scala 并遇到了一个问题:

Scala 具有类型 Tuple1Tuple2、...、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 Objects 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小镇女孩 2024-11-16 04:45:23

所有 TupleX 类都继承自 Product,后者定义了 def ProductIterator : Iterator[Any]。您可以调用它来迭代任何元组的所有元素。

例如:

def toStringSeq(tuple: Product) = tuple.productIterator.map(_.toString).toIndexedSeq

All TupleX classes inherit from Product, which defines def productIterator : Iterator[Any]. You can call it to iterates through all elements of any tuple.

For example:

def toStringSeq(tuple: Product) = tuple.productIterator.map(_.toString).toIndexedSeq
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文