Consider the following example:
import shapeless._
case class Foo(bar: String, baz: Boolean)
val labl = LabelledGeneric[Foo]
Now, the type of labl
is (prettified)
LabelledGeneric[Foo] {
type Repr =
FieldType[Symbol @@ String("bar"), String] ::
FieldType[Symbol @@ String("baz"), Boolean] ::
HNil
}
which already conveys the information I need, i.e. the names of the case class fields.
What I'm looking for is a way to go from labl
to something along the lines of
"bar" :: "baz" :: HNil
i.e. materializing the information contained in the singleton types into a value.
Is this possible?
I could use a macro, but I feel like I would end up rewriting something very similar to the GenericMacros
object in shapeless, so I'm wondering whether I can leverage it directly.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…