2017-05-03 53 views
8

如何將HList的類型作爲字符串獲取以便我可以打印它。例如"Int :: Long :: String :: HNil"如何以scala形式顯示HList的類型

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

我知道它的字符串心不是非常有用的,通常你想從gen.Repr

+0

看看http://stackoverflow.com /問題/ 34016881/labelledgeneric到獲得類名 – Yaneeve

回答

5

使用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