2
这是一个我正在考虑在Scala中使用的模式来定义合同,但不限制类型,但仍具有流畅的API,但没有所有详细的隐含性[..]。在Scala中输入类API
的想法是在一个类型的类之上构建一个隐含的类,像这样:
implicit class NumberLikeApi[N : NumberLike](n: N)
def add(n2: N): N = implicitely[NumberLike[N]].add(n, n2)
}
现在用的范围右implicits你可以这样做:
val sum = n1.add(n2)
相反的:
val sum = implicitly[NumberLike[N]].add(n1, n2)
我的问题:是否有可能自动化/生成隐式类部分?它基本上是类型类的重复。
我没有找到语言&标准库中的东西。图书馆里有没有宏可以做到这一点?
真棒!不知道这一个。以某种方式无法在我的搜索尝试中找到它。非常感谢,这使得模式有点可用。 –