Версия 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 при необходимости




Конструктор сайтов - uCoz
Copyright MyCorp © 2018