Описание тега scala
Scala - это язык программирования общего назначения, ориентированный главным образом на виртуальную машину Java. Разработанный для краткого, элегантного и типобезопасного выражения общих шаблонов программирования, он сочетает в себе императивный и функциональный стили программирования. Его ключевые особенности: усовершенствованная система статических типов с выводом типов; типы функций; сопоставление с образцом; неявные параметры и преобразования; перегрузка оператора; полная совместимость с Java; параллелизм
Scala - это язык программирования общего назначения, ориентированный главным образом на виртуальную машину Java. Разработанный для краткого, элегантного и типобезопасного выражения общих шаблонов программирования, он сочетает в себестили императивного и функционального программирования. Его ключевые особенности:
- Статическая типизация
- Продвинутая система типов с выводом типа и вариацией на объекте объявления
- Типы функций (включая анонимные), поддерживающие лексические замыкания.
- Сопоставление с образцом
- Неявные параметры и преобразование, которые поддерживают класс типов и обогатить-мои-библиотеку шаблонов
- Состав смеси
- Полная совместимость с Java
- Мощные конструкции параллелизма
- Расширенные языковые конструкции, такие как разграниченные продолжения и экспериментальная макросистема
Для получения более подробной информации, обратитесь к официальному Scala Введение и Scala документации.
Для поиска символов Scala, таких как =>
в stackru вы можете использовать поиск символов.
Для поиска в документации Scala вы можете использовать Scaps: Scala API Search или scalex.
Список доступных библиотек сообщества доступен на Awesome Scala.
Существует индекс библиотеки Scala от Scala Center: Scaladex.
Бесплатные книги и руководства по программированию на Scala
- Программирование на Scala, первое издание
- Scala на примере (PDF)
- Учебник Scala для Java-программистов
- Scala для Java-беженцев
- Школа Скала
- Учебники Scala
- Скала Тур
- Scala для нетерпеливых (первая часть доступна бесплатно на http://typesafe.com/resources/free-books)
- Курс Coursera - Функциональное программирование на Scala
- Упражнения Scala
- Подчеркивание книг
- Руководство по Scala для неофита
Учебное пособие по stackru Scala
- Введение в Scala
- Переменные / значения
- Методы
- Методы входа в систему
- Обозначения операторов и правила
- Несколько способов определения метода / функции ( оставляйте круглые скобки в вызовах методов)
- Унарные операторы
- Списки нескольких параметров
- Правоассоциативные имена методов
- Методы без побочных эффектов
- Как смешивать знаки препинания с буквенно-цифровыми символами в именах методов?
- Быстрые методы (
+=
,-=
,*=
,...) - Список названий "волшебных методов" ( применить, отменить / неприменить Seq, обновить)
- Именованные аргументы / необязательные параметры
- Вывод типа в возвращаемом типе
- Разница между
##
а такжеhashCode
- Литералы, операторы и блоки
- Циклы / рекурсия
- Структуры данных / Коллекции
- Учебник по дизайну коллекций
- Стандартная практика сбора
- Неизменяемые коллекции
- Изменяемые коллекции
- Ленивые коллекции
- Параллельные коллекции
- Конверсии
- Объем памяти
- Как коллекции Scala могут возвращать правильный тип коллекции из операции?
- Для понимания
- Перечисление
- Сопоставление с образцом
- Объяснение
- Привязка значений (
x @ X
) / привязка типа (x: X
) - Как сделать мульти-матч
- Охранники
- Как сопоставить переменные или значения?
- Как под капотом реализовано сопоставление с образцом?
- Исчерпывающий образец
- Соответствие шаблону в выражениях for
- Игнорировать случаи / без значения по умолчанию
- Соединение
- Соответствие шаблону PartialFunctions
- Соответствие регулярному выражению
- Соответствие шаблону с более чем одним совпадением
- Классы, объекты и типы
- Разница между
class
а такжеobject
- Почему
object
Синглтон? - Почему одиночные объекты более объектно-ориентированы?
- Сопутствующие объекты
- Разница между
class
а такжеtype
- В чем разница между классом с сопутствующим объектом и классом и объектом с тем же именем?
- Статический инициализатор
- Перегрузка конструктора
- Статические данные в не-объектах
- Как получить статический / динамический тип класса
- Тип проекции (
A#B
)
- Разница между
- Пакеты, импорт и идентификаторы видимости
- Импорт
- Пакеты
- Видимость
- Объяснение
- Частные строители
- Частные переменные
- Наследование
- Объяснение
- Ранний инициализатор
- Экстракторы
- Объяснение (Пример: союзы)
- Инфиксная нотация для параметров типа (
X[A, B]
=>A X B
)
- Классы кейсов
- Параметризованные типы
- Черты
- Самостоятельные ссылки
- Обработка ошибок
- Исключения
- Вариант
- Или
- Что использовать?
- Обработка типов
- Аннотации
- Функции / Функциональные литералы
- Объяснение
- Функции против методов
- Функции передачи
- Каррирование
- PartialFunction
- Синтаксис заполнителя и правила их замены
- Синтаксис заполнителя с правоассоциативными методами
- Разница между
=> Type
,() => Type
а такжеUnit => Type
- Функциональная быстрая сортировка
- Ключевое слово
return
в функциях более высокого порядка и проблема производительности с этим - Состав функций
- Замыкания в Scala
- Безопасность типов
- Последствия
- Отражение
- Что такое TypeTag и как его использовать?
- Как работать с Reflection?
- Шаблон Enrich-my-library (ранее известный как pimp-my-library)
- Обзор параллелизма
- Актеры
- Используйте Java из Scala и наоборот
- XML-литералы
- Объяснение
- Скала Свинг
- Объяснение
- Примеры
- Программирование типов
- Функциональная Scala
- Неизменность дорогая?
- Функциональное программирование на Scala медленнее, чем традиционное кодирование?
- ООП в чисто FP контексте?
- Продолжение
- Шаблоны проектирования для функционально-гибридных языков?
- Типовое программирование
- Высшие родственные типы
- Введите лямбды (
SomeType[({type λ[α] = Either[A, α]})#λ]
) - Виртуальные классы
-
forall
в Scala - Понимание
for comprehension
в Scala
Дальнейшее обучение
- Учебные ресурсы
- REPL
- Работать с
scalac
а такжеscala
- Приоритет оператора
- Стиль Scala
- Принципы функционального программирования в Scala, курс функционального программирования на Coursera, который ведет Мартин Одерски, создатель Scala.
- Принципы реактивного программирования, курс реактивного функционального программирования на Coursera, который проводят Мартин Одерски, Эрик Мейер, Роланд Кун.
- Параллельное программирование, курс параллельного программирования на Coursera, который проводят Виктор Кунчак и Александр Прокопец.