2017-05-03 4 views
8

Wie bekomme ich den Typ eines HList als String, damit ich es drucken kann. "Int :: Long :: String :: HNil" zBWie man den Typ einer HList in scala formlos zeigt

val gen = Generic[?] 
val typeString: String = ??? 
println("The type is " + typeString) 

Ich weiß, die Schnur der es sehr nützlich ist nicht und in der Regel wollen Sie die Art von gen.Repr

+0

einen Blick auf http://stackoverflow.com/questions/34016881/labelendenceric-to-get-Klassenname – Yaneeve

Antwort

5

Verwendung shapeless.Typeable:

scala> import shapeless._ 
import shapeless._ 

scala> case class A(i: Int, s: String) 
defined class A 

scala> val gen = Generic[A] 
gen: shapeless.Generic[A]{type Repr = 
    shapeless.::[Int,shapeless.::[String,shapeless.HNil]]} = 
    [email protected] 

scala> println(Typeable[gen.Repr].describe) 
Int :: String :: HNil 
Verwandte Themen