假设我有一个案例类
case class(id: Option[Long], name: String, gender: String)
然后我通过编译时反射
得到了字段名称val names = ... // Array(TermName(id), TermName(name), TermName("gender"))
如何将这些名称转换为id :: name :: gender :: HNil
(类型为Option[Long] :: String :: String :: HNil]
)
也就是说我在quasiquote中寻找q"..$name"
之类的内容,但使用::
而不是,
来扩展名称
答案 0 :(得分:0)
似乎可以这样做
def hlistConcat[T: Liftable ](elems: Iterable[T]) = {
val HNil = q"HNil": Tree
elems.toList.reverse.foldLeft(HNil) { (list, c) =>
q"$c :: $list"
}
}