
JVA-031 Язык Scala для Java-разработчиков
Описание курса
<![CDATA[<p>В данном курсе слушатели получат представление о специфике и особенностях языка Scala, его преимуществах и сложных местах. Курс включает рассмотрение операторов и типов данных Scala, изучение основных структур данных, таких как массивы, map, tuples, использование объектно-ориентированного и функционального программирования, работу с коллекциями Scala, применение pattern matching, case-классов, generic-типов и неявных преобразований. Предлагается большое количество практических упражнений.
- Условные операторы
- Циклы
- Функции
- Переменные
- Операторы
- Тип Unit
- Типы функций
- Типы Null, Nothing, Any, AnyRef и AnyVal
Исключения
- Создание, добавление и удаление элементов массива
- Доступ к элементам массива
- Массивы фиксированной и вариативной длины
- Многомерные массивы
- Операции с массивами
- Сортировка массива
- Конструирование и доступ в ассоциативным таблицам
- Итерирование, изменение, сортировка ассоциативных таблиц
- Кортежи
Зиппирование
- Классы
- Свойства с геттерами и сеттерами
- Использование скобок при вызове методов
- Свойства только с геттерами
- Вспомогательные конструкторы
- Основной конструктор
- Вложенные классы
- Расширение класса
- Переопределение методов
- Проверка и приведение типа
- Вызов конструктора суперкласса
- Переопределение полей
- Анонимные подклассы
- Абстрактные поля
- Порядок конструирования и ранние определения
- Иерархия наследования
Сравнение объектов на равенство
- Синглтоны
- Объекты-компаньоны
- Объекты, расширяющие класс или трейт
- Перечисления
- Пакеты-объекты
- Методы apply и unapply
- Ленивые объекты
Объекты, использующие несколько трейтов
- Трейты как интерфейсы
- Трейты с конкретной имплементацией
- Переопределение абстрактных методов в трейтах
- Конкретные и абстрактные поля в трейтах
- Порядок конструирования трейта
- Инициализация полей трейта
- Трейты, расширяющие классы
Self-типы
- Функции как переменные
- Аргументы по умолчанию и именованные аргументы
- Функции без возвращаемого значения
- Анонимные функции
- Функции с параметрами-функциями
- Замыкания
- Функциональные интерфейсы
- Каррирование
- Передача функции как параметра в виде блока кода
Использование return
- Трейты коллекций в Скала: Map, Set и Seq
- Изменяемые и неизменяемые коллекции
- Последовательности
- Списки
- Изменяемые списки
- Множества
- Операторы для работы с коллекциями
- Стандартные методы работы с коллекциями
- Использование функций map, reduce, fold и scan
- Зиппирование
- Итераторы
- Потоки данных
- Потокобезопасные коллекции
- Параллельные вычисления в коллекциях
Взаимодействие с коллекциями Java
- Использование паттерн матчинга
- Переменные в паттернах
- Паттерны-типы
- Сравнение с массивами, списками и кортежами
- Регурярные выражения
- Экстракторы
- Паттерны в определении переменных
Паттерны в выражениях for
- Сase-классы
- Метод copy и именованные параметры
- Защищенные классы
- Тип Option
Частично определенные функции
- Дженерик-классы
- Дженерик-функции
- Ограничения типов, вариативные типы +T, -T
Использование _ вместо типа
- Ключевое слово implicit для определения неявного приведения типа
- Импортирование и использование неявных преобразований
- Неявные параметры