Делает ли компилятор scala что-нибудь для оптимизации неявных классов?

Скажем, у нас есть неявный класс, такой как:

implicit class RichString(str: String) {
  def sayHello(): String = s"Hello, ${str}!"
}

Мы можем использовать метод sayHello, как если бы он был определен в классе String

"World".sayHello

Оптимизирует ли компилятор scala что-то вроде статического вызова, чтобы избежать накладных расходов на создание объекта RichString?

1 ответ

Решение

Компилятор Scala оптимизирует вызов метода только в том случае, если вы укажете класс extends AnyVal. Это так называемые классы значений.

Пример из документации, ссылка приведена ниже:

class RichInt(val self: Int) extends AnyVal {
  def toHexString: String = java.lang.Integer.toHexString(self)
}

http://docs.scala-lang.org/overviews/core/value-classes.html

Другие вопросы по тегам