含模式匹配与高种类类型的代码片段为何在Scala 2.12中无法编译?
Scala Wrapped Foo Type Hierarchy
我来帮你梳理并格式化这段Scala代码,它定义了一套包装器与Foo类型的层次结构:
- 先通过
Wrapping这个根特质统一所有包装类型,再派生出PinkWrap和GreenWrap两个具体的包装标识特质 - 接着是高阶类型的
Foo[M[_], A]特质,它有两个具象的case类实现:MintFoo和LiquoriceFoo,二者都持有一个A类型的实例 - 最后是
WrappedFoo特质,用来关联Foo实例和对应的包装器类型,目前给出的FooInPinkWrap就是把Foo实例包装在粉色包装里的具体实现
完整格式化后的代码如下:
import scala.language.higherKinds sealed trait Wrapping sealed trait PinkWrap extends Wrapping sealed trait GreenWrap extends Wrapping sealed trait Foo[M[_], A] {} case class MintFoo[M[_], A](a : A) extends Foo[M,A] case class LiquoriceFoo[M[_], A](a : A) extends Foo[M,A] sealed trait WrappedFoo[M[_], _, A] case class FooInPinkWrap[M[_], A](m: Foo[M, A]) extends WrappedFoo[M, PinkWrap, A] // 可在此扩展其他包装实现,比如 FooInGreenWrap
内容的提问来源于stack exchange,提问作者Tobia Tesan
相关产品推荐
相关产品推荐

