【发布时间】:2016-07-20 22:25:51
【问题描述】:
这是我正在考虑在 Scala 中使用的一种模式,用于在不限制类型的情况下定义合同,但仍然拥有流畅的 API,没有所有冗长的隐式 [..]。
我们的想法是在类型类之上构建一个隐式类,如下所示:
implicit class NumberLikeApi[N : NumberLike](n: N)
def add(n2: N): N = implicitely[NumberLike[N]].add(n, n2)
}
现在你可以在范围内使用正确的隐式:
val sum = n1.add(n2)
代替:
val sum = implicitly[NumberLike[N]].add(n1, n2)
我的问题:是否有可能以某种方式自动化/生成隐式类部分?它基本上是类型类的复制。
我在语言和标准库中找不到东西。库中是否有可以执行此操作的宏?
【问题讨论】: