这个签名声明了更高种类的类型:
case class MyContainer[A, M[_]](el: M[A])
现在,我可以创建它的实例:
scala> val mc1 = MyContainer[Int, Option](Some(3))
mc1: MyContainer[Int,Option] = MyContainer(Some(3))
我也可以声明MyContainer
为:
case class MyContainer[A, M[A]](el: M[A])
它产生与以下相同的实例mc1
:
mc1: MyContainer[Int,Option] = MyContainer(Some(3))
这些方法有什么区别,什么时候应该使用?