私のライブラリのいくつかの scala-doc を見ると、値クラスからの不要なノイズがあるように見えました。例えば:
implicit class RichInt(val i: Int) extends AnyVal {
def squared = i * i
}
これにより、不要なシンボルが導入されますi
。
4.i // arghh....
そのようなものは、scala docs と IDE オートコンプリートの両方に表示されますが、これは本当に良くありません。
それで...この問題を軽減する方法のアイデアはありますか? 私はあなたが使用できることを意味しますがRichInt(val self: Int)
、それはそれをより良くしません(4.self
、wth?)
編集:
次の例では、コンパイラは中間オブジェクトを消去しますか?
import language.implicitConversions
object Definition {
trait IntOps extends Any { def squared: Int }
implicit private class IntOpsImpl(val i: Int) extends AnyVal with IntOps {
def squared = i * i
}
implicit def IntOps(i: Int): IntOps = new IntOpsImpl(i) // optimised or not?
}
object Application {
import Definition._
// 4.i -- forbidden
4.squared
}