无形HList返回类型

问题描述

我试图在我的代码中加入一些无形的东西,并且陷入了一个尴尬的早期障碍。在下面的示例中,似乎将一个未定义的对象包含在HNil中:

trait HasValue[A,B] {
  def get(a: A): B
  def getAll[L <: HList,O <: HList](a: A)(implicit ga: GetAll[A,L]): O = ga.getAll(a,HNil)
}

trait GetAll[A,B] {
  def getAll[L <: HList,O <: HList](a: A,l: L): O
}
implicit def getAllIfHasValue[A,B](implicit ev: HasValue[A,B]) = new GetAll[A,l: L): O = ev.get(a) :: l
}

并出现错误-type mismatch: Found B :: L,required O。 我本以为,由于L本身就是HListB :: L本身应该就是HList,因此一切都应该很好。但显然不是。

任何帮助表示赞赏!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)