使用HLists作为函数的参数

 mobiledu2502883211 发布于 2023-02-13 03:42

是否可以将HList作为函数参数传递?

这是我到目前为止:

import shapeless._
import poly._

object id extends (Id ~> Id) {
  def apply[T](f: shapeless.Id[T]): shapeless.Id[T] = f
}

object ListHandler {
  def mapOverHlist[ListType <: HList](list: ListType) = list.map(id)
}

val x = "foo" :: "bar" :: 0xb33f :: HNil    
ListHandler.mapOverHlist(x)

导致此错误:

could not find implicit value for parameter mapper:   
shapeless.ops.hlist.Mapper[ShapelessSpec.this.id.type,ListType]

senia.. 5

错误文本包含解决方案

import shapeless.ops.hlist.Mapper

def mapOverHlist[L <: HList](list: L)(implicit m: Mapper[id.type, L]): m.Out =
  list.map(id)

方法map接受隐式参数,您应该提供这样的参数(通过向方法的声明添加相同的参数).

1 个回答
  • 错误文本包含解决方案

    import shapeless.ops.hlist.Mapper
    
    def mapOverHlist[L <: HList](list: L)(implicit m: Mapper[id.type, L]): m.Out =
      list.map(id)
    

    方法map接受隐式参数,您应该提供这样的参数(通过向方法的声明添加相同的参数).

    2023-02-13 04:25 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有