name metatags keywords generador etiquetas ejemplos description aws scala case-class shapeless labelled-generic

scala - metatags - meta tags seo



Extraer valores de etiqueta de una instancia de LabelledGeneric (1)

Puede obtener las claves del registro (como Symbol s) a través de shapeless.ops.record.Keys .

Esta

import shapeless._ import shapeless.ops.record._ case class Foo(bar: String, baz: Boolean) val labl = LabelledGeneric[Foo] val keys = Keys[labl.Repr].apply println(keys) println(keys.toList.map(_.name))

resultados en

''bar :: ''baz :: HNil List(bar, baz) : List(String)

Considere el siguiente ejemplo:

import shapeless._ case class Foo(bar: String, baz: Boolean) val labl = LabelledGeneric[Foo]

Ahora, el tipo de labl es (prettified)

LabelledGeneric[Foo] { type Repr = FieldType[Symbol @@ String("bar"), String] :: FieldType[Symbol @@ String("baz"), Boolean] :: HNil }

que ya transmite la información que necesito, es decir, los nombres de los campos de clase de caso.

Lo que busco es una forma de pasar de labl a algo labl a

"bar" :: "baz" :: HNil

es decir, materializar la información contenida en los tipos singleton en un valor.

es posible? Podría usar una macro, pero creo que terminaría reescribiendo algo muy similar al objeto GenericMacros en un GenericMacros sin forma, así que me pregunto si puedo aprovecharla directamente.