Релиз Scala 2.10
Сегодня, наконец-то, вышла финальная версия Scala 2.10.0, о чем на сообщают на официальном сайте.Новые возможности:
Value классы
Теперь пользовательские классы могут наследоваться от AnyVal (раньше было возможно только от AnyRef). Позволяют добиться большей производительности, выделяя память для объектов во время компиляции.
class Wrapper(val underlying: Int) extends AnyVal
У класса должен быть единственный, публичный val параметр, тип которого будет типом вашего класса во время рантайма.
Есть некоторые ограничения, частично из-за текущей реализации JVM.
docs.scala-lang.org/overviews/core/value-classes.html
Неявные классы
Ключевое слово implicit теперь можно применять не только к методам, но и к классам. Добавлены для того, чтобы упростить расширение существующих классов и уменьшить нагрузку на implicit методы. Так же, очевидно, могут иметь только один параметр (можно больше, если остальные неявные). В классе можно определять только методы, исключение — параметр конструктора.
Синтаксис:
implicit class RichInt(n: Int) extends Ordered[Int] {
def min(m: Int): Int = if (n <= m) n else m
}
docs.scala-lang.org/sips/pending/implicit-classes.html
Читать дальше →