有没有办法坚持(我的意思是保持在一个变量中)(有可能吗?)动态增长HList
?我的伪代码:
var llist = 1 :: 2 :: "foo" :: true :: HNil
var list: HList = HNil // here is a wrong type! in fact we dont need HList type
object mapFunc extends Poly1 {
implicit def default[T] = at[T](t => { list = t :: list })
}
llist map mapFunc
显然,这段代码不起作用。list.head
所以 ofc 它可以工作,但由于输入不正确,我们甚至不能这样做HList
(据我所知,list
甚至根本不保留类型参数)。
结果类型:
shapeless.HList = true :: foo :: 2 :: 1 :: HNil
所以,这是不正确的。
编辑
上面的信息还不够,我明白了。
所以我想有一些对象,就像一个变量,它可以是任何HList
类型的;
class className {
var hlist: HList = _ // it is not correct
}
为了有时HList
在这个变量中传递;
className.hlist = llist
ps @milessabin mb 是的,最好为我的问题找到另一个解决方案。