Делает ли компилятор 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