Scala 如何在Shapess中实现ToTraversable?

Scala 如何在Shapess中实现ToTraversable?,scala,shapeless,Scala,Shapeless,我有DL您不需要自己实例化这个值。相反,您应该要求将其作为一个额外的隐式参数,并让编译器完成以下工作: def myMethod[DL <: HList](detailsIn: DL)(implicit ev: ToTraversable.Aux[DL, List, Any]) = { val detail: String = detailsIn.mkString("", "; ", "") println(detail) } def-myMethod[DL如果myMethod可

我有
DL您不需要自己实例化这个值。相反,您应该要求将其作为一个额外的隐式参数,并让编译器完成以下工作:

def myMethod[DL <: HList](detailsIn: DL)(implicit ev: ToTraversable.Aux[DL, List, Any]) = {
  val detail: String = detailsIn.mkString("", "; ", "")
  println(detail)
}

def-myMethod[DL如果myMethod可以找到隐式,为什么mkString找不到它?我想一个原因是它不在范围内,但为什么?这是一个设计决策,允许在选择隐式时具有更大的灵活性吗?我尝试编译了您的示例,但在这个项目中我仍然失败了MWE:;也许我缺少一个合适的include。IntelliJ没有抓住问题问题,但我想这并不奇怪。
  def mkString(start: String, sep: String, end: String)
    (implicit toTraversable: ToTraversable.Aux[L, List, Any]): String = this.toList.mkString(start, sep, end)
implicit val dlToList: ToList[DL, Any] = new ToTraversable[DL, List] {???}
def myMethod[DL <: HList](detailsIn: DL)(implicit ev: ToTraversable.Aux[DL, List, Any]) = {
  val detail: String = detailsIn.mkString("", "; ", "")
  println(detail)
}