Wählen Sie das N-te Element einer HList of Lists aus und geben Sie diesen Wert als HList of values zurück.

Ich habe eine HList, in der jede Spalte eine Spalte einer Tabelle darstellt. Jede Liste in der HList ist gleich lang.

Ich möchte eine Funktion schreiben können, die einzelne Zeilen dieser Tabelle als Tupel oder HList von Werten auswählt. Irgendwann werde ich das in etwas Vernünftigeres umwandeln (z. B. eine Case-Klasse).

import shapeless.PolyDefns.~>
import shapeless.{HList, HNil}
val a = List(1,2,3) :: List("a", "b", "c") :: List(true, false, true) :: HNil

object broken extends (HList ~> HList) {
  def apply[T](n:Int, l:HList): HList = {
    // I want to pick out the nth element of each HList
    // so in the above example, if n==1
    // I want to return
    // 2 :: "b" :: false :: HNil
    ???
  }
}

broken(1,a)

Kann ich diese Funktion so einstellen, dass sie gemäß den Kommentaren funktioniert?

Bonuspunkte: Kann ich dies als Iterator schreiben, der meine HList "a" oben in eine Folge von (Int, String, Boolean) oder eine äquivalente HList umwandelt?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage