【发布时间】:2013-10-15 00:12:48
【问题描述】:
有没有办法持久化(我的意思是保留在 var 中)(可能吗?)动态增长的 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
显然,此代码不起作用。所以 ofc 它可以工作,但由于 HList 输入不正确,我们甚至不能做 list.head(据我所知,list 甚至根本不保留类型参数)。
结果类型:
shapeless.HList = true :: foo :: 2 :: 1 :: HNil
所以,这是不正确的。
编辑
上面的信息还不够,我明白了。
所以我想在某个对象中包含一个变量,它可以是任何HList 类型;
class className {
var hlist: HList = _ // it is not correct
}
为了有时在这个变量中传递HList;
className.hlist = llist
附言@milessabin mb 是的,最好为我的问题找到另一个解决方案。
【问题讨论】:
-
你能澄清你所说的坚持是什么意思吗?我想也许你的意思是进入数据库。我不确定您是否想要 HList 的 HList 或最终产品/目标应该是什么。
-
好的,谢谢,我已经编辑了;顺便说一句,我的意思是动态地将元素添加到带有一些
HList的变量中,例如将一些元素添加到现有列表(例如空)......但在我看来这是不可能的,因为我们无法重新定义变量类型。在简单列表的情况下,我们可以实现这一点,子类型的原因,实际上我们丢失了关于类型的信息。所以,谢谢你!是否可以删除问题,因为它没有用,最可能的答案是“否”? -
动态增长 HList 是标准用例。他们有 append 和所有内置的东西。
-
如果您展示了您希望能够编写的代码,这可能会有所帮助。
-
好的,我已经更新了帖子
标签: list scala map shapeless heterogeneous