【问题标题】:shapeless: Derive a Tupler for an HListshapeless:为 HList 派生一个 Tupler
【发布时间】:2020-04-20 22:09:50
【问题描述】:

我对 shapeless 非常陌生,并且正在努力为我的 HList 派生一个 Tupler。这是一个简化的例子:

object Builder {
  import shapeless.ops.hlist.Tupler.hnilTupler
  val empty: Builder[HNil] = new Builder[HNil](HNil)
}

class Builder[L <: HList: Tupler](list: L) {
  def add[T](value: T): Builder[T :: L] = new Builder[T :: L](value :: list)
  def tuple: Tupler[L]#Out = list.tupled
}

def add[T](value: T): Builder[T :: L] = new Builder[T :: L](value :: list) 行无法编译,因为没有隐含的Tupler[T :: L],我无法从前一个推导出下一个。 有什么想法吗?

【问题讨论】:

    标签: scala shapeless hlist


    【解决方案1】:

    shapeless.ops.hlist.Tupler.hnilTupler 不应该被导入。

    通常在 Scala 中,如果一个方法缺少一些隐式,你添加相应的隐式参数。试试

    def add[T](value: T)(implicit tupler: Tupler[T :: L]): Builder[T :: L] = new Builder[T :: L](value :: list)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-24
      • 2016-11-29
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2023-03-31
      相关资源
      最近更新 更多