Scala 具有较高类型的特征

Scala 具有较高类型的特征,scala,Scala,给出以下特征(从本手册中可以看出): 我相信这意味着NatT接受两个更高的参数:F和G 基于此假设,我尝试创建一个实例,其中F和G具有type选项: scala> case object Maybe extends NatT[Option, Option] { | override def apply(f: Option[Int]) = f | } <console>:8: error: object creation impossible, since

给出以下特征(从本手册中可以看出):

我相信这意味着
NatT
接受两个更高的参数:
F
G

基于此假设,我尝试创建一个实例,其中F和G具有type
选项

scala> case object Maybe extends NatT[Option, Option] {
     |   override def apply(f: Option[Int]) = f
     | }
<console>:8: error: object creation impossible, since method apply in trait NatT of type [T](f: Option[T])Option[T] is not de
fined
       case object Maybe extends NatT[Option, Option] {
                   ^
<console>:9: error: method apply overrides nothing.
Note: the super classes of object Maybe contain the following, non final members named apply:
def apply[T](f: Option[T]): Option[T]
         override def apply(f: Option[Int]) = f
                      ^
scala>case对象可能扩展了NatT[Option,Option]{
|覆盖def应用(f:选项[Int])=f
| }
:8:错误:无法创建对象,因为[T]类型的特征NatT中的方法apply(f:选项[T])选项[T]未取消
罚款
case对象可能扩展了NatT[Option,Option]{
^
:9:错误:方法应用不覆盖任何内容。
注意:object的超类可能包含以下名为apply的非最终成员:
def应用[T](f:选项[T]):选项[T]
覆盖def应用(f:选项[Int])=f
^

如何修复创建
Maybe
实例时的此尝试?

您的
apply
方法缺少类型参数。就这么简单

case object Maybe extends NatT[Option, Option] {
    def apply[A](f: Option[A]): Option[A] = f
}

您试图在没有类型参数的情况下定义
apply
,这被视为一种不同的方法,因此
apply
似乎没有实现。鉴于
F
G
应该是更高的类型,尝试将它们固定到
选项[Int]是没有意义的

您的
apply
方法缺少类型参数。就这么简单

case object Maybe extends NatT[Option, Option] {
    def apply[A](f: Option[A]): Option[A] = f
}
您尝试在没有类型参数的情况下定义
apply
,这被视为是另一种方法,因此
apply
似乎没有实现。鉴于
F
G
应该是更高的类型,尝试将它们固定到
选项[Int]
是没有意义的