나는 우수한 Shapeless Guide에서 다음에 대한 coproducts을 읽어'봉인 된 특성'에 따른 복합 제품의 이점?
... 그것은 로서도 특히 특별하지 않은한다는 가치가있다. 위의 기능은 + : 및 CNil 대신에 Either 및 Nothing을 사용하여 수행 할 수 있습니다. 있는 경우, 이익이
sealed trait
를 통해 부산물 (Coproduct)를 사용하는, 무엇인가 내 자신의 이해를 돕기 위하여import shapeless.{Coproduct, :+:, CNil, Inl, Inr} case class Red() case class Amber() case class Green() type Light = Red :+: Amber :+: Green :+: CNil val red: Light = Inl(Red()) // red: Light = Inl(Red()) val green: Light = Inr(Inr(Inl(Green()))) // green: Light = Inr(Inr(Inl(Green())))
:
여기에 위의 코드인가?
구현 사례 클래스를 숨기려면 봉인 된 특성을 사용합니다. 예 : 구현 클래스를 컴패니언 객체에 넣고 비공개로 만듭니다. 타입 시스템을 어지럽히는데 아무런 의미가 없습니다. –
또한 레드가 라이트를 연장합니까? 봉인 된 특성으로 계층 구조를 피하려면 + :를 사용할 수 있습니다. –