Scala 2.5.0-final
Версия реализации Scala for JVM языка программирования ScalaВерсия Scala 2.5.0-final выпущена 21 мая 2007.
Основные изменения относительно версии Scala 2.4.0-final:
- добавлена поддержка OSGi
-
добавлены методы
print/read
в объект
Predef
-
добавлены методы
Actor.continue
иScheduler.restart/snapshot
в библиотекуactors
-
добавлены методы
deepEquals
иdeepToString
в классArray
-
добавлены новы опции для утилиты
scaladoc
- исправлено много критических и некритических ошибок
Изменения в синтаксисе языка
Полиморфизм конструктора типов. Типизированные параметры и члены абстрактного типа теперь могут обладать конструктором типов:
trait Iterable[+t] {
type MyType[+t] <: Iterable[t] // MyType конструктор типа
def filter(p: t => Boolean): MyType[t] = //...
def map[s](f: t => s): MyType[s] = //...
}
abstract class List[+t] extends Iterable[t] {
type MyType[+t] = List[t]
}
Появилась возможность инициализировать некоторые поля и объекты до момента вызова их конструктора. Это бывает полезным, когда нет нормальных параметров конструктора:
trait Greeting {
val name: String
val msg = "How are you, " + name
}
class C extends {
val name = "Bob"
} with Greeting {
println(msg)
}
Пересмотрен синтаксис выражений цикла for:
Старый вариант:
for (val x <- List(1, 2, 3); x % 2 == 0) println(x)
Новый вариант:
for (x <- List(1, 2, 3) if x % 2 == 0) println(x)
Появилась возможность использовать case
для определения значения функций напрямую для функций с более чем одним аргументом:
def scalarProduct(xs: Array[Double], ys: Array[Double]) =
(0.0 /: (xs zip ys)) {
case (a, (b, c)) => a + b * c
}
Появилась возможность определения анонимных функций, используя знак подчеркивания, для аргументов
Комментарии
]]>blog comments powered by Disqus
]]>