首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >uPickle HList撰稿人

uPickle HList撰稿人
EN

Stack Overflow用户
提问于 2015-07-22 07:47:56
回答 1查看 245关注 0票数 2

我正在尝试创建自定义Writer,用于将shapeless.HList转换为简单数组,而不是复杂的嵌套对象。

但我无法提供足够的具体证据--它可以用我的poly映射

我有这样的代码:

代码语言:javascript
复制
import upickle.Js
import upickle.default._
import shapeless._
import poly._
import shapeless.ops.hlist.{ToTraversable, Mapper}

object writeItem extends Poly1 {
  implicit def item[I](implicit w: Writer[I]) = at[I](w.write)(writer.write)
}

implicit def hListWriter[L <: HList, Mappr <:  Mapper[writeItem.type, L] ]
(implicit mapper: Mappr,
 trav: ToTraversable.Aux[Mappr#Out, List, Js.Value]) = Writer[L] {
  l => Js.Arr(l.map(writeItem).toList[Js.Value]:_*)
}

和编译错误:

找不到参数toTraversableAux: shapeless.ops.hlist.ToTraversable.Aux[mapper.Out,List,upickle.Js.Value]的隐式值

如何定义函数通过HListList转换为统一的map

EN

回答 1

Stack Overflow用户

发布于 2015-07-22 07:56:25

为此,我发现已经有了Mapper.Aux,由此产生的methid定义如下所示:

代码语言:javascript
复制
  implicit def hListWriter[L <: HList, Out <: HList]
  (implicit mapper: Mapper.Aux[writeItem.type, L, Out],
   trav: ToTraversable.Aux[Out, List, Js.Value]) = Writer[L] {
    l => Js.Arr(l.map(writeItem).toList[Js.Value]:_*)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31556958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档