]]> ]]>

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

]]>

Работа программистам