1
예제 코드 :기본 클래스에 링크 된 하위 클래스에 대해 암시 적으로 가져 오는 방법은 무엇입니까?
trait A
case class B() extends A
case class C() extends A
trait D[T]
implicit object DB extends D[B]
implicit object DC extends D[C]
def getImplicit[T: D](arg: T) = implicitly[D[T]]
val list = Seq(B(), C())
list map getImplicit
내가 얻을 수있는 방법을 명시 적으로 목록에있는 개체를 캐스팅없이 implicits? 어쩌면 내가 HList로 할 수 있을까? 아니면 매크로가 나를 도울 수 있습니까?
내가 시도 :case class Wrap[T](v: T)
object getImplicit extends (Wrap ~> D) {
def apply[T](arg: Wrap[T]) = implicitly[D[T]]
}
val list = Wrap(B()) :: Wrap(C()) :: HNil
list map getImplicit
그리고 난 컴파일 오류 얻을 : 당신은 getImplicit
의 적용 방법에 유형의 클래스를 제공해야합니다
could not find implicit value for parameter e: D[T]
def apply[T](arg: Wrap[T]) = implicitly[D[T]]
scala-macros 태그를 삭제하는 것이 좋습니다. – gzm0