Классы значений вводят нежелательные публичные методы

Глядя на некоторые scala-docs моих библиотек, мне показалось, что есть некоторый нежелательный шум от классов значений. Например:

implicit class RichInt(val i: Int) extends AnyVal {
  def squared = i * i
}

Это вводит нежелательный символi:

4.i   // arghh....

Этот материал появляется и в документах Scala, и в автозаполнении IDE, что на самом деле не очень хорошо.

Итак ... есть идеи, как смягчить эту проблему? Я имею в виду, вы можете использоватьRichInt(val self: Int) но это не делает это немного лучше (4.selfчто?)

РЕДАКТИРОВАТЬ:

В следующем примере компилятор стирает промежуточный объект или нет?

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
}

Ответы на вопрос(5)

Ваш ответ на вопрос