2
고양이를 사용하면 이렇게하는 것이 더 좋고 더 관용적 인 방법일까요?모나드 트랜스포머 유형을 업 캐스팅하는 방법은 무엇입니까?
값을 추출하고 다시 적용하면 다소 이상하게 느껴집니다. 감사.
고양이를 사용하면 이렇게하는 것이 더 좋고 더 관용적 인 방법일까요?모나드 트랜스포머 유형을 업 캐스팅하는 방법은 무엇입니까?
값을 추출하고 다시 적용하면 다소 이상하게 느껴집니다. 감사.
예, 어떤 functor의 경우 F
Cats는 사용자가 요청할 수있는 widen
구문 방법을 제공합니다. 이있는 경우 (예을 위해의 F
로 Eval
사용) 그래서 :
class Foo
class Bar extends Foo
import cats.Eval, cats.data.EitherT, cats.syntax.functor._
val eithertBar = EitherT[Eval, String, Bar](Eval.now(Right(new Bar)))
이 쓸 수 있습니다 :
scala> eithertBar.widen[Foo]
res0: cats.data.EitherT[cats.Eval,String,Foo] = EitherT(Now(Right([email protected])))
참고 그 F
(예 : 표준 라이브러리 타입 생성자 인 경우 Option
) 또는 기타 객체에 Functor
인스턴스가없는 다른 유형의 생성자의 경우 가져 오거나 그렇지 않으면 Functor
을 제공해야합니다.