2017-05-03 19 views
8

Bir HList türünü nasıl String olarak alabilirim, böylece yazdırabilirim. örneğin "Int :: Long :: String :: HNil"scala biçiminde bir HList türünün nasıl gösterileceğini gösterir

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

Bundan Dize çok faydalı değidil ve genellikle gen.Repr

+0

http://stackoverflow.com bakmak/sorular/34016881/labelledgeneric-to-get-sınıf adı – Yaneeve

cevap

5

Kullanımlardan türü shapeless.Typeable istiyorum:

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