Документация

Language

Стандартная Библиотека

Руководства и обзоры, охватывающие стандартную библиотеку Scala.

Эта страница описывает главные изменения в коллекциях для тех кто переводит проект на Scala 2.13, а также демонстрирует как собирать проект под версии Scala 2.11 / 2.12 и 2.13

By Julien Richard-Foy

На этих страницах описывается архитектура фреймворка коллекций, представленного в Scala 2.13. По сравнению с API Коллекции вы узнаете здесь больше о внутренней работе фреймворка.

By Martin Odersky, Lex Spoon и Julien Richard-Foy

В этом документе вы узнаете, как коллекции помогают вам реализовывать собственные персональные коллекции, используя всего несколько строчек кода и переиспользуя большую часть функциональности коллекций из базового фреймворка.

By Julien Richard-Foy

В данном руководстве показано, как написать операции, которые могут быть применены к любому типу коллекции и которые вернут исходный тип коллекции, а также как написать операции, которые можно параметризовать по типу коллекции.

Язык

Руководства и обзоры, охватывающие функционал языка Scala.

Строковая интерполяция позволяет пользователям встраивать данные из переменных непосредственно в обрабатываемые строковые литералы. Вот пример:

val name = "James"
  println(s"Hello, $name")  // Hello, James
В приведенном выше литерале s"Hello, $name" - это перерабатываемая строка. Такая запись указывает компилятору сделать некоторую дополнительную работу над самим литералом. Сам обрабатываемый строковый литерал обозначается набором символов, предшествующим ". Интерполяция строк была введена в SIP-11, который содержит все детали реализации.

By Josh Suereth

В Скале 2.10 введена новая функциональность, называемая неявными классами. Неявный класс - это класс, помеченный ключевым словом implicit. Это ключевое слово позволяет использовать первичный конструктор класса в процессе неявного преобразования одного типа в другой, когда класс находится в области видимости.

By Mark Harrah

Вычислительные-Классы - это новый механизм в Scala, позволяющий избежать создания объектов во время исполнения, которое достигается за счет объявления класса в качестве подкласса AnyVal.

Создание своих библиотек

Руководства по вкладу в создание библиотек с открытым исходным кодом в Scala экосистеме

By Julien Richard-Foy

Список инструментов, которые авторы библиотек должны настроить для публикации и документирования своих библиотек.

Параллельное и Конкурентное Программирование

Полное руководство по параллельному и конкурентному программированию в библиотеках Scala.

By Philipp Haller, Aleksandar Prokopec, Heather Miller, Viktor Klang, Roland Kuhn и Vojin Jovanovic

Фьючерсы (Futures) дают возможность эффективно и без блокировок осуществлять многие операции параллельно. Future - это обертка над объектом, который может пока ещё не существовать. Как правило, вычисление Future осуществляется конкурентно и может быть использовано позднее. Композиция таких конкурентных процессов приводит в итоге к более быстрому, асинхронному, не блокирующему, параллельно исполняемому коду.

Совместимость

Что с чем работает (или не работает).

Какие версии Scala работают с какими версиями JDK

Когда две версии Scala совместимы на уровне двоичного кода - это означает что проект безопасно компилировать на одной версии Scala и связывать с другой версией Scala во время исполнения. Безопасное связывание во время исполнения (только!) означает, что JVM не бросит исключение (подкласса) LinkageError при выполнении вашей программы в смешанном сценарии, предполагая, что никаких исключений не возникает при компиляции и запуске на одной и той же версии Scala. В том числе, это означает, что можно иметь внешние зависимости в программе, использующие другую версию Scala, чем та, с которой вы скомпилировали проект, до тех пор пока они совместимы на уровне двоичного кода. Другими словами, раздельная компиляция на разных но совместимых на уровне двоичного кода версиях не создает новых проблем, по сравнению с компиляцией и запуском проекта на одной и той же версии Scala.

Для любой продуктивной экосистемы важно иметь разнообразный и исчерпывающий набор библиотек. Хотя библиотеки Scala легко разрабатывать и распространять, хорошая разработка библиотек выходит за рамки простого написания кода и его публикации. В этом руководстве мы рассматриваем важную тему двоичной совместимости.

Инструменты

Справочный материал по основным инструментам Scala, таким как Scala REPL и генерации Scaladoc.

Scala REPL это инструмент (scala) для обработки выражений в Scala.

Он выполняет исходный скрипт, который в начале оборачивает в специальный блок, который затем компилирует и запускает.

Scala API инструмента генерации документации.

Contents

Компилятор

Руководства и обзоры, охватывающие компилятор Scala: плагины компилятора, рефлексия и инструменты метапрограммирования такие как макросы.

experimental
By Heather Miller, Eugene Burmako и Philipp Haller

Фреймворк рефлексии в Scala.

Contents
experimental
By Eugene Burmako

Фреймворк метапрограммирования в Scala.

Contents
experimental
By Denys Shabalin

Quasiquotes наиболее подходящий способ манипулирования синтаксическим деревом Scala.

Contents
By Lex Spoon и Seth Tisue

Используя плагины можно настраивать и расширять компилятор Scala. В этом руководстве описываются возможности плагина и рассказывается о том, как создать простой плагин.

By Сообщество

Различные варианты управления тем, как scalac компилирует код.

Наследие

Руководство по функционалу, которые больше не соответствуют последним версиям Scala (2.12+).

By Martin Odersky и Lex Spoon

На этих страницах описывается архитектура фреймворка коллекций до версии 2.12 . По сравнению с API Коллекции вы узнаете здесь больше о внутренней работе фреймворка.