Документация
Стандартная Библиотека
Руководства и обзоры, охватывающие стандартную библиотеку Scala.
Библиотека Scala коллекций.
Contents- Введение
- Изменяемые и Неизменяемые Коллекции
- Трейт Iterable
- Последовательности. Трейты Seq, IndexedSeq и LinearSeq
- Реализации Неизменяемых Коллекций
- Реализации Изменяемых Коллекций
- Массивы
- Строки
- Показатели производительности
- Равенство
- Отображения
- Итераторы
- Создание коллекций с нуля
- Преобразования между Java и Scala коллекциями
Эта страница описывает главные изменения в коллекциях для тех кто переводит проект на Scala 2.13, а также демонстрирует как собирать проект под версии Scala 2.11 / 2.12 и 2.13
На этих страницах описывается архитектура фреймворка коллекций, представленного в Scala 2.13. По сравнению с API Коллекции вы узнаете здесь больше о внутренней работе фреймворка.
В этом документе вы узнаете, как коллекции помогают вам реализовывать собственные персональные коллекции, используя всего несколько строчек кода и переиспользуя большую часть функциональности коллекций из базового фреймворка.
В данном руководстве показано, как написать операции, которые могут быть применены к любому типу коллекции и которые вернут исходный тип коллекции, а также как написать операции, которые можно параметризовать по типу коллекции.
Язык
Руководства и обзоры, охватывающие функционал языка Scala.
Строковая интерполяция позволяет пользователям встраивать данные из переменных непосредственно в обрабатываемые строковые литералы. Вот пример:
val name = "James"
println(s"Hello, $name") // Hello, James
В приведенном выше литерале s"Hello, $name"
- это перерабатываемая строка. Такая запись указывает компилятору сделать некоторую дополнительную работу над самим литералом. Сам обрабатываемый строковый литерал обозначается набором символов, предшествующим ". Интерполяция строк была введена в SIP-11, который содержит все детали реализации.
В Скале 2.10 введена новая функциональность, называемая неявными классами. Неявный класс - это класс, помеченный ключевым словом implicit. Это ключевое слово позволяет использовать первичный конструктор класса в процессе неявного преобразования одного типа в другой, когда класс находится в области видимости.
Вычислительные-Классы - это новый механизм в Scala, позволяющий избежать создания объектов во время исполнения, которое достигается за счет объявления класса в качестве подкласса AnyVal.
Создание своих библиотек
Руководства по вкладу в создание библиотек с открытым исходным кодом в Scala экосистеме
Список инструментов, которые авторы библиотек должны настроить для публикации и документирования своих библиотек.
Параллельное и Конкурентное Программирование
Полное руководство по параллельному и конкурентному программированию в библиотеках Scala.
Фьючерсы (Futures) дают возможность эффективно и без блокировок осуществлять многие операции параллельно. Future - это обертка над объектом, который может пока ещё не существовать. Как правило, вычисление Future осуществляется конкурентно и может быть использовано позднее. Композиция таких конкурентных процессов приводит в итоге к более быстрому, асинхронному, не блокирующему, параллельно исполняемому коду.
Scala's Parallel Collections Library.
ContentsСовместимость
Что с чем работает (или не работает).
Какие версии Scala работают с какими версиями JDK
Когда две версии Scala совместимы на уровне двоичного кода - это означает что проект безопасно компилировать на одной версии Scala и связывать с другой версией Scala во время исполнения. Безопасное связывание во время исполнения (только!) означает, что JVM не бросит исключение (подкласса) LinkageError при выполнении вашей программы в смешанном сценарии, предполагая, что никаких исключений не возникает при компиляции и запуске на одной и той же версии Scala. В том числе, это означает, что можно иметь внешние зависимости в программе, использующие другую версию Scala, чем та, с которой вы скомпилировали проект, до тех пор пока они совместимы на уровне двоичного кода. Другими словами, раздельная компиляция на разных но совместимых на уровне двоичного кода версиях не создает новых проблем, по сравнению с компиляцией и запуском проекта на одной и той же версии Scala.
Для любой продуктивной экосистемы важно иметь разнообразный и исчерпывающий набор библиотек. Хотя библиотеки Scala легко разрабатывать и распространять, хорошая разработка библиотек выходит за рамки простого написания кода и его публикации. В этом руководстве мы рассматриваем важную тему двоичной совместимости.
Инструменты
Справочный материал по основным инструментам Scala, таким как Scala REPL и генерации Scaladoc.
Scala REPL это инструмент (scala
) для обработки выражений в Scala.
Он выполняет исходный скрипт, который в начале оборачивает в специальный блок, который затем компилирует и запускает.
Scala API инструмента генерации документации.
ContentsКомпилятор
Руководства и обзоры, охватывающие компилятор Scala: плагины компилятора, рефлексия и инструменты метапрограммирования такие как макросы.
Фреймворк рефлексии в Scala.
ContentsФреймворк метапрограммирования в Scala.
ContentsQuasiquotes наиболее подходящий способ манипулирования синтаксическим деревом Scala.
ContentsИспользуя плагины можно настраивать и расширять компилятор Scala. В этом руководстве описываются возможности плагина и рассказывается о том, как создать простой плагин.
Различные варианты управления тем, как scalac компилирует код.
Наследие
Руководство по функционалу, которые больше не соответствуют последним версиям Scala (2.12+).
Scala's Collection Library.
Contents- Introduction
- Mutable and Immutable Collections
- Trait Traversable
- Trait Iterable
- The sequence traits Seq, IndexedSeq, and LinearSeq
- Sets
- Maps
- Concrete Immutable Collection Classes
- Concrete Mutable Collection Classes
- Arrays
- Strings
- Performance Characteristics
- Equality
- Views
- Iterators
- Creating Collections From Scratch
- Conversions Between Java and Scala Collections
- Migrating from Scala 2.7
На этих страницах описывается архитектура фреймворка коллекций до версии 2.12 . По сравнению с API Коллекции вы узнаете здесь больше о внутренней работе фреймворка.