相关疑难解决方法(0)

无形(scala)中的"at"是什么?

我已经看到一个名为"at"的对象(可能是一个函数)散布在整个无形源和使用无形的代码中.特别是,它用于解答另一个问题.这是代码片段:

object iterateOverHList extends Poly1 {
  implicit def iterable[T, L[T] <: Iterable[T]] = at[L[T]](_.iterator)
}
Run Code Online (Sandbox Code Playgroud)

我有一些线索,它与〜>类型的apply方法有关."at"具体做什么,它在哪里定义?

scala shapeless

13
推荐指数
2
解决办法
1278
查看次数

具有自定义类型绑定的无形映射和子类型多态

试图映射自定义多态类的HList我得到了可怕的"无法找到参数映射器的隐式值"错误.代码示例:

import shapeless._

trait SubTrait
case class A() extends SubTrait
case class B() extends SubTrait

case class C[T <: SubTrait](x: T)

object TheMapper extends Poly1 {
  implicit def default[T <: SubTrait, L[T] <: C[T]] = at[L[T]](_.x)
}

val ab = C(A()) :: C(B()) :: HNil

println(ab.map(TheMapper))
Run Code Online (Sandbox Code Playgroud)

如果L [T]的边界是例如Iterable(参见这个非常相似的问题,解决方案和注释),这可以正常工作.我错过了什么?

polymorphism scala shapeless

2
推荐指数
1
解决办法
76
查看次数

标签 统计

scala ×2

shapeless ×2

polymorphism ×1