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

Language

Стандартна бібліотека

Посібники та огляди стандартної бібліотеки Scala.

Ця сторінка описує основні зміни в колекціях для користувачів, які переходять на Scala 2.13. Також, розглянуто варіанти побудови проєкти з перехресною сумісністю для Scala 2.11/2.12 і 2.13.

By Julien Richard-Foy

Ці сторінки описують архітектуру фреймворку колекцій, представленого в Scala 2.13. У порівнянні з Collections API ви дізнаєтеся більше про внутрішню роботу фреймворка.

By Martin Odersky, Lex Spoon та Julien Richard-Foy

У цьому документі ви дізнаєтеся, як фреймворк колекцій допомагає вам визначати власні колекції за допомогою кількох рядків коду, повторно використовуючи переважну частину функцій колекції з фреймворку.

By Julien Richard-Foy

У цьому посібнику показано, як писати перетворення, що застосовуються до всіх типів колекцій і повертати той самий тип колекції. Також, як писати операції, які параметризуються типом колекції.

Мова

Посібники та огляди, що охоплюють функції на мові Scala.

By Adrien Piquerez

Все, що потрібно знати про сумісність і міграцію на Scala 3.

нове в Scala 3
By Nicolas Stucki

Детальний підручник, який охоплює всі можливості, пов'язані з написанням макросів у Scala 3.

By Mark Harrah

Класи значень – це новий механізм у Scala, що дозволяє уникнути виділення об'єктів під час виконання. Це досягається за допомогою визначення нових підкласів AnyVal.

нове в Scala 3
By Alvin Alexander

Огляд формату TASTy, призначеного для користувачів мови Scala.

Інтерполяція рядків дозволяє користувачам вбудовувати посилання на змінні безпосередньо в оброблені рядкові літерали. Ось приклад:

val name = "James"
  println(s"Hello, $name")  // Hello, James
Літерал s"Hello, $name" є рядковим літералом, який буде додатково оброблено. Це означає, що компілятор виконує додаткову роботу над цим літералом. Оброблений рядковий літерал позначається набором символів, що передують ". Інтерполяція рядків була введена в SIP-11.

By Josh Suereth

Scala 2.10 представила нову функцію під назвою неявні класи. Неявний клас — це клас, позначений ключовим словом implicit. Це ключове слово робить основний конструктор класу доступним для неявних перетворень, коли клас знаходиться в області видимості.

Створення бібліотек

Посібники щодо розробки бібліотек з відкритим кодом для екосистеми Scala.

By Julien Richard-Foy

Перелічує всі інструменти, які автори бібліотек мають налаштувати для публікації та документування своїх бібліотек.

Паралельне та конкурентне програмування

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

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

Ф'ючери дають можливість міркувати про паралельне виконання багатьох операцій – ефективним і не блокуючим способом. Ф'ючер — це об’єкт-заповнювач для значення, яке може ще не існувати. Як правило, вартість Ф'ючеру надається одночасно і може згодом використовуватися. Складання одночасних завдань таким чином, як правило, призводить до швидшого, асинхронного, не блокувального паралельного коду.

Сумісність

Що з чим працює (чи ні).

Які версії Scala працюють на яких версіях JDK

Якщо дві версії Scala бінарно сумісні, можна безпечно скомпілювати свій проєкт на одній версії Scala та зв'язати з іншою версією Scala під час виконання. Безпечне зв'язування під час виконання (тільки!) означає, що JVM не генерує (підклас) LinkageError під час виконання вашої програми у змішаному сценарії, припускаючи, що вона не виникає при компіляції та запуску в одній версії Scala. Конкретно це означає, що ви можете мати зовнішні залежності від вашого шляху до класу під час виконання, які використовують іншу версію Scala, ніж та, з якою ви компілюєте, за умови, що вони сумісні з бінарними файлами. Іншими словами, окрема компіляція в різних версіях, сумісних з бінарними файлами, не створює проблем у порівнянні з компіляцією та запуском всього в одній версії Scala.

Різноманітний і повний набір бібліотек важливий для будь-якої продуктивної екосистеми програмного забезпечення. Хоча розробляти та розповсюджувати бібліотеки Scala легко, добре авторство бібліотеки виходить за рамки простого написання коду та його публікації. У цьому посібнику ми розглянемо важливу тему бінарної сумісності.

Інструменти

Довідковий матеріал про основні інструменти Scala, такі як покоління Scala REPL і Scaladoc.

Scala REPL це інструмент (scala) для виконання виразів в Scala.

Команда scala виконає скрипт шляхом обгортання його в шаблон, а потім компіляції та виконання отриманої програми

оновлено
By Krzysztof Romanowski, Aleksander Boruch-Gruszecki, Andrzej Ratajczak, Kacper Korban, Filip Zybała

Оновлення в Scala 3 для інструменту генерації документації API.

Інструмент Scala для генерації документації для API.

Contents

Компілятор

Посібники та огляди компілятора Scala: плагіни компілятора, інструменти рефлексії та метапрограмування, такі як макроси.

By Jamie Thompson, Anatolii Kmetiuk

Посібник з компілятора Scala 3 та вирішення проблем.

відсутнє в Scala 3
By Heather Miller, Eugene Burmako та Philipp Haller

Фреймворк Scala для рефлексії під час виконання/компіляції.

Contents
By Lex Spoon та Seth Tisue

Плагіни компілятора дозволяють налаштовувати та розширювати компілятор Scala. У цьому підручнику описується функція плагіну та пояснюється, як створити простий плагін.

By Community

Різні параметри того як scalac компілює ваш код.

By Torsten Schmits

Новий механізм для більш зручних повідомлень про помилки, друку ланцюжків залежних неявних параметрів та кольорових відмінностей знайдених/потрібних типів.

By Lukas Rytz та Andrew Marki

Компілятор може виконувати різні оптимізації.

Спадщина (legacy)

Посібники, що охоплюють функції, які більше не стосуються останніх версій Scala (2.12+).

By Martin Odersky та Lex Spoon

На цих сторінках детально описується архітектура фреймворку колекцій Scala. У порівнянні з Collections API ви дізнаєтеся більше про внутрішню роботу фреймворку. Ви також дізнаєтеся, як ця архітектура допомагає вам визначати власні колекції за допомогою кількох рядків коду, повторно використовуючи переважну частину функцій колекції з фреймворку.