유형이없는 방식으로 객체를 쉽게 축적하기 위해 엉성한을 사용하려고합니다.셰이프리스 : 앞머리. 암시 적으로 찾을 수 없음
문제는 concat (:::
) 두 개의 HList
입니다. 나는 초보자를 만났습니다 (적어도 그것은 보인다). 컨텍스트에서 Prepend
암시 적 인스턴스가 누락됩니다.
그러나 hlist.scala
을 살펴보면 이라는 일반 객체가 Prepend
및 PrependAux
개체에 정의되어 있음을 알 수 있습니다.
import Prepend
과 import PrependAux
을 수동으로 추가해도 아무 것도 변경되지 않았습니다 (분명히 ...).
그래서 여기에 최소로 감소 코드 : 이제 콘솔에서
enter code here
import shapeless._
import HList._
import Prepend._
import PrependAux._
object test {
val a:HList = 1 :: 4 :: "A" :: HNil
val b:HList = "R" :: false :: HNil
val c:HList = a ::: b // <<<<<<<<<<< NEEDS A Prepend in the context
}
: 내 눈을 태워해야합니까
[error] test.scala:10: could not find implicit value for parameter prepend: shapeless.Prepend[shapeless.HList,shapeless.HList]
[error] val c:HList = a ::: b // this needs an implicit Prepend in the current context
? 에 통속화 전에 강한로했기 때문에
감사
편집
약간의 업데이트는, 약간에게 진짜 문제를 다시 complexify합니다. 그들이 HList의 것을
case class A[L<:HList](a:L) {
def doSmth[C <:HList](c:C) = a ::: c
}
그래서 내가 실제 유형에 대한 액세스가, 내가 아는 적이 없다 : 여기
내가 할 수있을 것입니다 물건의 종류이다.
유일한 답변도 업데이트되었습니다. 여전히 작동합니다. 내 솔루션에 빠진 것은 분명히 scalac 옵션이었습니다 ... –