更高种类的类型和无标签的最终版本

时间:2018-09-26 08:50:16

标签: scala tagless-final

我正在尝试编写一个可以采用任何无标记最终特征并返回@RestController public class OwnerController { @GetMapping(value = "owner/{ownerId}/animal") public List<Animal> getAnimalsForOwner(@PathVariable("ownerId") Long id) { } } 的函数。

[ {"name": "First"}, {"name": "Second"} ]

我不明白为什么以上代码无法编译。

以下作品。

F[String]

但是我该如何摆脱这一特征?

1 个答案:

答案 0 :(得分:4)

尝试

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

在编写apply[Api[F[_]]](..)时,您不会声明ApiF,而只会声明ApiF无关紧要,您可以写apply[Api[F[_]]](..)apply[Api[G[_]]](..)或只写apply[Api[_[_]]](..),无论如何都不能在室外使用F

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