Выберите N-й элемент списка списков и верните это значение как список значений.
У меня есть HList, в котором каждый столбец представляет столбец таблицы. Каждый список в HList имеет одинаковую длину.
Я хотел бы иметь возможность написать функцию, которая выбирает отдельные строки этой таблицы в виде кортежа или HList значений. Со временем я преобразую это во что-то более разумное (например, в класс дел).
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)
Можно ли исправить эту функцию, чтобы она работала в соответствии с тем, что я описал в комментариях?
Бонусные баллы: Могу ли я написать это как итератор, который преобразует мой HList «a» выше в последовательность (Int, String, Boolean) или эквивалентный HList?