我发现自己编写了很多样板 scala 来在函数模块周围添加隐式类包装器。例如,如果我为 Seqs 定义了这个函数
def takeWhileRight[T](p: T=>Boolean)(s: Seq[T]): Seq[T] = s.reverse.takeWhile(p).reverse
我需要编写这个(完全确定的)隐式包装器:
implicit class EnrichSeq[T](value: Seq[T]) {
def takeWhileRight(p: T=>Boolean): Seq[T] = SeqOps.takeWhileRight(p)(value)
}
这是众多例子之一。在每种情况下,隐式包装器最终都可以从它转发到的函数中机械地派生出来。
是否有人知道可以自动生成此类包装器的任何工具或代码生成器?