微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无形HList返回类型

如何解决无形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 举报,一经查实,本站将立刻删除。