10

私は Scala を使い始めたばかりで、問題に遭遇しました。

Scala には型、、、Tuple1Tuple2、がありTuple22ます。Scalaquery は、クエリを反復処理するときにタプルを返します。

これで、特定のクラス (ZK's ListitemRenderer) ができました。このクラスは、 を受け取りObject、それぞれがいくつかのセルで構成される行を含む gui リストを作成します。しかしListitemRenderer、一般的ではありません。したがって、私の問題は、Object「データ」を持っていることです。これは実際には任意の長さのタプルであり、セルを作成するために反復する必要があります (単純にdata._1.toString, …)。

以来ありません へのスーパータイプをTuple1-22知りませんでした。できない できなかっdata.asInstanceOf[Tuple].productIterator foreach {…}

私に何ができる?


以下の回答は、実際にすべてのタプルに特性があることを教えてくれました – Product– 目的の機能を提供しforeachます。

4

1 に答える 1

17

すべてのクラスは、 を定義TupleXする から継承します。これを呼び出して、任意のタプルのすべての要素を反復処理できます。Productdef productIterator : Iterator[Any]

例えば:

def toStringSeq(tuple: Product) = tuple.productIterator.map(_.toString).toIndexedSeq
于 2011-05-24T20:25:38.150 に答える