]]> ]]>

Scala 2.6.0-final

Версия реализации Scala for JVM языка программирования Scala

Версия Scala 2.6.0-final выпущена 11 сентября 2007.

Основные изменения относительно версии Scala 2.5.1-final:

  • добавлены новые методы take/takeWhile, drop/dropWhile и reverse в класс scala.Array
  • добавлена поддержка многомерных массивов вплоть до девятой размерности
  • добавлено сообщение буферизации в remote.TcpService
  • интегрирован пакет scala.util.parsing.combinator в стандартную библиотеку Scala
  • реорганизованы (и местами переименованы) опции компилятора
  • удалены устаревшие классы Actor, NameServer, Pid, Process из пакета scala.concurrent
  • исправлены многие ошибки, в том числе и критические

Изменения в синтаксисе языка

Появилась возможность объявления типов при помощи ключевого слова forSome:

    class Ref[T]
    abstract class Outer { type T }

    Ref[T] forSome { type T <: java.lang.Number }
    Ref[x.T] forSome { val x: Outer }

Добавлена возможность объявления “ленивых” переменных при помощи модификатора lazy:

    import compat.Platform._
    val t0 = currentTime
    lazy val t1 = currentTime
    val t2 = currentTime

    println("t0 <= t2: " + (t0 <= t2))  //истина
    println("t1 <= t2: " + (t1 <= t2))  //ложь

Появилась возможность объявления структурированных типов:

    class File(name: String) {
      def getName(): String = name
      def open() { /*..*/ }
      def close() { println("close file") }
    }
    def test(f: { def getName(): String }) { println(f.getName) }

    test(new File("test.txt"))
    test(new java.io.File("test.txt"))

Считаются устаревшими:

  • старый синтаксис для выражений for
  • requires, принято использовать { self: T => ... }
  • &f для не примененных методов, используется f при необходимости

Комментарии

]]>

blog comments powered by Disqus

]]>

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