Scala - это язык программирования общего назначения, в основном предназначенный для виртуальной машины Java. Разработанный для краткого, элегантного и безопасного для типов представления общих шаблонов программирования, он сочетает в себе как императивный, так и функциональный стили программирования. Его ключевые особенности: продвинутая система статического типа с выводом типа; типы функций; сопоставления с образцом ; неявные параметры и преобразования; перегрузка оператора; полная совместимость с Java; совпадение
Scala- это язык программирования общего назначения, в основном предназначенный для виртуальной машины Java. Разработанный для выражения общих шаблонов программирования в сжатой, элегантной и безопасной для типов форме, он сочетает в себе imperative-programmingи функционально-программированиестилей . Его ключевые особенности:
- Статическая печать
- Продвинутая система типов с выводом типа и декларацией на сайте
- Типы функций (включая анонимные), которые поддерживают лексические замыкания
- Шаблон сопоставления
- Неявные параметры и преобразования, которые поддерживают шаблоны типов и enrich-my-library
- Смешанная композиция
- Полная совместимость с Java
- Мощные конструкции параллелизма
- Расширенные языковые конструкции, такие как продолжения с разделителями и экспериментальная система макросов
Для получения дополнительной информации см. Официальные Введение в Scalaи Документация Scala.
Для поиска символов Scala, таких как =>
в переполнении стека, вы можете воспользоваться поиском символа.
Для поиска в документации по Scala вы можете использовать Scaps: поиск по Scala APIили Scalex.
Список доступных библиотек сообщества доступен по адресу Awesome Scala.
Существует индекс библиотеки Scala от Центра Scala: Scaladex.
Бесплатные книги и руководства по программированию Scala
- Программирование в Scala, первое издание
- Scala By Example (PDF)
- Учебник по Scala для программистов на Java
- Скала для беженцев из Явы
- Школа Скала
- Учебники по Scala
- Скала Тур
- Scala для нетерпеливых (первая часть доступна бесплатно на
Учебник Scala по переполнению стека
- Введение в Scala
- Переменные / значения
- Методы
- Методы без побочных эффектов
- Как смешать знаки препинания с буквенно-цифровыми символами в именах методов?
- Методы быстрого доступа (
+=
,-=
,*=
, ...) - Список имен« магических методов »(заявл y, unapply / unapplySeq, update)
- Именованные аргументы / необязательные параметры
- Вывод типа в типе возврата
- Разница между
##
иhashCode
- Литералы, операторы и блоки
- Loops / рекурсии
- Цикл
- Хвостовая рекурсия
- Структуры данных / Коллекции
- Руководство по дизайну коллекций
- Стандартная практика сбора коллекций
- Неизменяемые коллекции
- изменяемые коллекции
- Lazy Collections
- Параллельные коллекции
- Конверсии
- Объем памяти
- Как коллекции Scala могут возвращать правильный тип коллекции из операции?
- Для понимания ,
- Перечисление
- Сопоставление с образцом
- Объяснение
- Привязка значения (
x @ X
)/ Тип привязки (x: X
) - Как выполнить множественное совпадение
- Охранники
- Как сопоставить переменные или значения?
- Как реализовано сопоставление с образцом под капотом?
- Исчерпывающий шаблон
- Патте Соответствие в выражениях for
- Игнорировать случаи / нет значения по умолчанию
- Соединение
- Соответствие шаблону PartialFunctions
- Match Regex
- Сопоставление шаблонов с несколькими совпадениями
- Классы, объекты и типы
- Разница между
class
иobject
- Почему
object
является синглтоном? - Почему одноэлементные объекты более объектно-ориентированы ?
- Сопутствующие объекты
- Разница между
class
иtype
- В чем разница между классом с объектом-компаньоном и классом и объектом с одинаковыми именами? e?
- Статический инициализатор
- Перегрузка конструктора
- Статические данные в не-объектах
- Как получить статический / исполняемый тип класса
- Проекция типа (
A#B
)
- Разница между
- Пакеты, импорт и идентификаторы видимости
- Импортирует
- Пакеты
- Видимость
- Объяснение
- Частные конструкторы
- Частные переменные
- Наследование
- Объяснение
- Ранняя инициализация
- Экстракторы
- Объяснение(Пример: союзы)
- Инфиксная нотация для параметров типа(
X[A, B]
=>A X B
)
- Тематические классы
- Параметризованные типы
- Черты
- Использование
- смешивание нескольких признаков
- Черты против абстрактных классов
- Что означает
trait A <: B
? - Линеаризация
- Смешайте черту с переопределенным поведением
- Динамические миксины
- Как они реализованы под капотом?
- Как получить доступ к одной из нескольких характеристик суперкласса?
- Самостоятельные ссылки
- Обработка ошибок
- Исключения
- Опция
- либо
- Что использовать? А>
- Обработка типов
- Аннотации
- Функции / Функциональные литералы
- Объяснение
- Функции против методов
- Пропускать функции
- Curry
- PartialFunction
- Синтаксис заполнителяи их правила замены
- синтаксисом местозаполнителя с правоассоциативными методами
- Разница между
=> Type
,() => Type
иUnit => Type
- Функциональная быстрая сортировка
- Ключевое слово
return
в функциях более высокого порядка и проблема с производительностью - Композиция функций
- Закрытия в Scala
- Тип безопасности
- Implicits
- Отражение
- Что такое TypeTag и как мне его использовать?
- Как работать с Reflection?
- Шаблон Enrich-my-library (ранее известный как pimp-my-library)
- Обзор параллелизма
- Актеры
- Используйте Java из Scala и наоборот
- XML-литералы
- < Li> Объяснение
- Скала Свинг
- Объяснение
- Примеры
- Программирование типов
- Функциональная Скала
- Шаблоны проектирования для функционально-гибридные языки?
- Программирование типов
- Типы с более высоким родом
- Введите lambdas (
SomeType[({type λ[α] = Either[A, α]})#λ]
) - Виртуальные классы
-
forall
в Scala - Общие сведения о
for comprehension
в Scala
Дальнейшее обучение
- Образовательные ресурсы
- REPL
- Работа с
scalac
иscala
- Приоритет оператора
- Скала стиль
- Принципы функционального программирования в Scala, курс по функциональному программированию на Coursera, который ведет Мартин Одерский, создатель Scala.
- Принципы реактивного программирования, курс по реактивному функциональному программированию на Coursera, который преподают Мартин Одерский, Эрик Мейер, Роланд Кун.
- Параллельное программирование, курс параллельного программирования на Coursera, читаемый Виктором Кунчаком и Александаром Прокопеком.