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]
是没有意义的