【发布时间】:2020-09-08 23:47:27
【问题描述】:
Scala 2.13
我有很多类似的形式特征
trait SomeTrait[F[_]]{
def someOp(): F[Unit]
//...
}
及其实现
class SomeTraitImpl[F[_]: Sync] extends SomeTrait[F]{
//...
}
object SomeTrait{
def apply[F[_]: Sync](): SomeTrait[F] = new SomeTraitImpl[F]()
}
问题是这样的单一应用方法看起来很丑陋,而且它是一个样板。有没有办法自动生成object? simulacrum 或其他任何东西(手写的宏注释?)可以做到吗?
【问题讨论】:
-
您是否研究过案例类/案例对象?他们为你生成了很多样板文件。
-
@JamesWhiteley 问题是我需要从 apply 方法返回确切的
SomeTrait。不是SomeTraitImpl。这是主要区别。
标签: scala functional-programming scala-cats scala-macros companion-object