Документація
Стандартна бібліотека
Посібники та огляди стандартної бібліотеки Scala.
Бібліотека колекцій Scala.
Contents- Вступ
- Змінювані та незмінювані колекції
- Трейт Iterable
- Трейти послідовностей. Seq, IndexedSeq та LinearSeq
- Реалізація незмінюваних колекцій
- Реалізація змінюваних колекцій
- Масиви
- Рядки
- Показники продуктивності
- Рівність
- Відображення
- Ітератори
- Створення колекцій з нуля
- Перетворення між колекціями Java та Scala
Ця сторінка описує основні зміни в колекціях для користувачів, які переходять на Scala 2.13. Також, розглянуто варіанти побудови проєкти з перехресною сумісністю для Scala 2.11/2.12 і 2.13.
Ці сторінки описують архітектуру фреймворку колекцій, представленого в Scala 2.13. У порівнянні з Collections API ви дізнаєтеся більше про внутрішню роботу фреймворка.
У цьому документі ви дізнаєтеся, як фреймворк колекцій допомагає вам визначати власні колекції за допомогою кількох рядків коду, повторно використовуючи переважну частину функцій колекції з фреймворку.
У цьому посібнику показано, як писати перетворення, що застосовуються до всіх типів колекцій і повертати той самий тип колекції. Також, як писати операції, які параметризуються типом колекції.
Мова
Посібники та огляди, що охоплюють функції на мові Scala.
Все, що потрібно знати про сумісність і міграцію на Scala 3.
Детальний підручник, який охоплює всі можливості, пов'язані з написанням макросів у Scala 3.
Класи значень – це новий механізм у Scala, що дозволяє уникнути виділення об'єктів під час виконання. Це досягається за допомогою визначення нових підкласів AnyVal.
Огляд формату TASTy, призначеного для користувачів мови Scala.
Інтерполяція рядків дозволяє користувачам вбудовувати посилання на змінні безпосередньо в оброблені рядкові літерали. Ось приклад:
val name = "James"
println(s"Hello, $name") // Hello, James
Літерал s"Hello, $name"
є рядковим літералом, який буде додатково оброблено. Це означає, що компілятор виконує додаткову роботу над цим літералом. Оброблений рядковий літерал позначається набором символів, що передують ". Інтерполяція рядків була введена в SIP-11.
Scala 2.10 представила нову функцію під назвою неявні класи. Неявний клас — це клас, позначений ключовим словом implicit. Це ключове слово робить основний конструктор класу доступним для неявних перетворень, коли клас знаходиться в області видимості.
Створення бібліотек
Посібники щодо розробки бібліотек з відкритим кодом для екосистеми Scala.
Перелічує всі інструменти, які автори бібліотек мають налаштувати для публікації та документування своїх бібліотек.
Паралельне та конкурентне програмування
Повні посібники, що охоплюють деякі бібліотеки Scala для паралельного та конкурентного програмування.
Ф'ючери дають можливість міркувати про паралельне виконання багатьох операцій – ефективним і не блокуючим способом. Ф'ючер — це об’єкт-заповнювач для значення, яке може ще не існувати. Як правило, вартість Ф'ючеру надається одночасно і може згодом використовуватися. Складання одночасних завдань таким чином, як правило, призводить до швидшого, асинхронного, не блокувального паралельного коду.
Бібліотека паралельних колекцій Scala.
ContentsСумісність
Що з чим працює (чи ні).
Які версії Scala працюють на яких версіях JDK
Якщо дві версії Scala бінарно сумісні, можна безпечно скомпілювати свій проєкт на одній версії Scala та зв'язати з іншою версією Scala під час виконання. Безпечне зв'язування під час виконання (тільки!) означає, що JVM не генерує (підклас) LinkageError під час виконання вашої програми у змішаному сценарії, припускаючи, що вона не виникає при компіляції та запуску в одній версії Scala. Конкретно це означає, що ви можете мати зовнішні залежності від вашого шляху до класу під час виконання, які використовують іншу версію Scala, ніж та, з якою ви компілюєте, за умови, що вони сумісні з бінарними файлами. Іншими словами, окрема компіляція в різних версіях, сумісних з бінарними файлами, не створює проблем у порівнянні з компіляцією та запуском всього в одній версії Scala.
Різноманітний і повний набір бібліотек важливий для будь-якої продуктивної екосистеми програмного забезпечення. Хоча розробляти та розповсюджувати бібліотеки Scala легко, добре авторство бібліотеки виходить за рамки простого написання коду та його публікації. У цьому посібнику ми розглянемо важливу тему бінарної сумісності.
Інструменти
Довідковий матеріал про основні інструменти Scala, такі як покоління Scala REPL і Scaladoc.
Scala REPL це інструмент (scala
) для виконання виразів в Scala.
Команда scala
виконає скрипт шляхом обгортання його в шаблон, а потім компіляції та виконання отриманої програми
Оновлення в Scala 3 для інструменту генерації документації API.
Інструмент Scala для генерації документації для API.
ContentsКомпілятор
Посібники та огляди компілятора Scala: плагіни компілятора, інструменти рефлексії та метапрограмування, такі як макроси.
Посібник з компілятора Scala 3 та вирішення проблем.
Фреймворк Scala для рефлексії під час виконання/компіляції.
ContentsФреймворк метапрограмування Scala.
ContentsКвазіцитати — це зручний спосіб маніпулювати синтаксичними деревами Scala.
ContentsПлагіни компілятора дозволяють налаштовувати та розширювати компілятор Scala. У цьому підручнику описується функція плагіну та пояснюється, як створити простий плагін.
Різні параметри того як scalac компілює ваш код.
Новий механізм для більш зручних повідомлень про помилки, друку ланцюжків залежних неявних параметрів та кольорових відмінностей знайдених/потрібних типів.
Компілятор може виконувати різні оптимізації.
Спадщина (legacy)
Посібники, що охоплюють функції, які більше не стосуються останніх версій Scala (2.12+).
Бібліотека колекцій Scala.
Contents- Вступ
- Змінювані та незмінювані колекції
- Трейт Traversable
- Трейт Iterable
- Трейти послідовностей. Seq, IndexedSeq та LinearSeq
- Множини
- Асоціативні масиви
- Реалізація незмінюваних колекцій
- Реалізація змінюваних колекцій
- Масиви
- Рядки
- Показники продуктивності
- Рівність
- Відображення
- Ітератори
- Створення колекцій з нуля
- Перетворення між колекціями Java та Scala
- Міграція з версії Scala 2.7
На цих сторінках детально описується архітектура фреймворку колекцій Scala. У порівнянні з Collections API ви дізнаєтеся більше про внутрішню роботу фреймворку. Ви також дізнаєтеся, як ця архітектура допомагає вам визначати власні колекції за допомогою кількох рядків коду, повторно використовуючи переважну частину функцій колекції з фреймворку.