[SCALA] HList에지도 할 수 없습니다
SCALAHList에지도 할 수 없습니다
나는 볼품이 문제를 해결하기 위해 노력했다. 그러나 나는 HList에지도 할 수없는 몇 가지 이유입니다. 나는 자체에 대한 코드가 말하는 드리겠습니다.
import shapeless._
import HList._
case class Foo(a: Option[Int], b: Option[Int])
val a = Foo(Some(3), None)
val b = Foo(Some(22), Some(1))
implicit val fooIso = HListIso(Foo.apply _, Foo.unapply _)
val mapper = new (({ type O2[+A] = (Option[A], Option[A]) })#O2 ~> Option) {
def apply[A](x: (Option[A], Option[A])): Option[A] = x._1.orElse(x._2)
}
fooIso.fromHList(fooIso.toHList(a).zip(fooIso.toHList(b)).map(mapper))
오류 메시지는 다음과 같습니다
<console>:55: error: could not find implicit value for parameter mapper: shapeless.Mapper[java.lang.Object with shapeless.~>[[+A](Option[A], Option[A]),Option],shapeless.::[(Option[Int], Option[Int]),shapeless.::[(Option[Int], Option[Int]),shapeless.HNil]]]
fooIso.fromHList(fooIso.toHList(a).zip(fooIso.toHList(b)).map(mapper))
^
왜 매핑 작동하지 않는 이유는 무엇입니까?
해결법
-
==============================
1.쉽게 수정이있다 : 단지 대신 발의 대상으로 함수를 정의합니다 :
쉽게 수정이있다 : 단지 대신 발의 대상으로 함수를 정의합니다 :
object f extends (({ type O2[+A] = (Option[A], Option[A]) })#O2 ~> Option) { def apply[A](x: (Option[A], Option[A])): Option[A] = x._1 orElse x._2 }
(I 매핑하는 매퍼 암시 인수를 피하기 혼란 대신 매퍼의 함수 f라는 이름의 한합니다.)
나는 확실히 나는-에서 왜 어떤 점 I가의 세부 사항을 해결하려고 도움을 줄 수 아니에요 왜 발은 볼품에서 이런 종류의 일에 대한 작동하지 않을 것입니다, 나는 내가 가진 얼마나 멀리 기억하지 않습니다.
from https://stackoverflow.com/questions/11442440/unable-to-map-on-hlist by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스칼라의 지능과 정수의 차이점은 무엇입니까? (0) | 2019.11.13 |
---|---|
[SCALA] 스칼라에서 피보나치 함수를 작성하는 가장 빠른 방법은 무엇입니까? (0) | 2019.11.12 |
[SCALA] 액세스 부모의 회원 매크로 주석을 처리 할 수는 없지만 (0) | 2019.11.12 |
[SCALA] 스칼라에서 가변 길이 인수를 사용하여 (0) | 2019.11.12 |
[SCALA] 멀티 - 프로젝트 수 GIT에서는 SBT 의존성로 사용할 수? (0) | 2019.11.12 |