0

我正在尝试编写一个可以采用任何无标签最终特征并返回的函数F[String]

def apply[Api[F[_]]](implementation: Api[F[_]]): F[String] = ???

我不明白为什么上面没有编译。

以下作品。

trait Api[F[_]]

def apply[F[_]](implementation: Api[F[_]]): F[String] = ???

但是我怎样才能摆脱这种特质呢?

4

1 回答 1

4

尝试

def apply[Api[_[_]], F[_]](implementation: Api[F]): F[String] = ???

当您编写时,apply[Api[F[_]]](..)您不声明Apiand F,您只声明ApiF没关系,你可以写orapply[Api[F[_]]](..)apply[Api[G[_]]](..)just apply[Api[_[_]]](..),反正你不能F在外面使用。

Api[F[_]]在类型参数的声明中是正确的语法,在类型位置的类型应用程序中你应该写Api[F].

于 2018-09-26T08:59:54.640 回答