Добро пожаловать к обзору
Здесь вы увидите вводное описание наиболее часто используемых возможностей Scala. Этот обзор предназначен для новичков в изучении языка.
Это лишь небольшая экскурсия, а не полный курс освоения языка. Для глубокого погружения рекомендуем почитать книги или воспользоваться курсами на других ресурсах.
Что такое Scala?
Scala - это современный мультипарадигмальный язык программирования, разработанный для выражения общих концепций программирования в простой, удобной и типобезопасной манере. Элегантно объединяя особенности объектно-ориентированных и функциональных языков.
Scala объектно ориентированный
Scala - это чистый объектно-ориентированный язык в том смысле, что каждое значение - это объект. Типы и поведение объектов описаны в классах и трейтах(характеристиках объектов). Классы расширяются за счет механизма наследования и гибкого смешивания классов, который используется для замены множественного наследования.
Scala функциональный
Scala также является функциональным языком в том смысле, что каждая функция - это значение. Scala предоставляет легкий синтаксис для определения анонимных функций, поддерживает функции высшего порядка, поддерживает вложенные функции, а также каррирование. Scala имеют встроенную поддержку алгебраических типов данных, которые используются в большинстве функциональных языках программирования (эта поддержка базируется на механизме сопоставления с примером, где в качестве примера выступают классы образцы ). Объекты предоставляют удобный способ группировки функций, не входящих в класс.
Вдобавок к этому, концепция сопоставления с примером логично переносится на обработку XML-данных используя в качестве примера регулярные выражения, при поддержке функционала объектов экстракторов. Для еще большего удобства обработки данных представлена схема формирования запросов с использованием for-выражения. Такие возможности делают Scala идеальным решением для разработки приложений по типу веб-сервисов.
Scala статически типизированный
Scala оснащен выразительной системой типов, которая обеспечивает безопасное и гармоничное использование абстракций. В частности, система типов поддерживает:
- обобщенные классы
- вариантность типов
- верхние и нижние границы типов
- внутренние классы и члены абстрактного типа, как часть объектов
- составные типы
- самоописываемые типы
- неявные параметры и неявные преобразования
- полиморфные методы
Выведение типов означает, что разработчику не обязательно добавлять в код избыточную информацию о типах. Такой функционал обеспечивает основу для безопасного переиспользования абстракций и типобезопасного развития программного обеспечения.
Scala расширяемый
Зачастую разработка приложений для очень специфичных областей требует специфичных для этих областей языковых возможностей, либо отдельных специализированных языков программирования. Вместо этого Scala предлагает уникальные механизмы, для легкой модификации и расширения самого языка.
Во многих случаях такое можно сделать без использования средств мета-программирования, таких как макросы. Например:
- Неявные классы позволяют добавлять новые методы к уже существующим.
- Интерполяция строк позволяет добавлять обработку строк (расширяется разработчиком с помощью интерполяторов).
Scala совместимый
Scala полностью совместим с популярной средой Java Runtime Environment (JRE). Взаимодействие с основным объектно-ориентированным языком программирования Java происходит максимально гладко. Новые функции Java, такие как SAM, лямбды, аннотации и дженерики, имеют прямые аналоги в Scala.
Те функции Scala, которые не имеют аналогов в Java, такие как параметры по умолчанию и именованные параметры, компилируются как можно ближе к Java. Scala имеет такую же компиляционную модель (отдельная компиляция, динамическая загрузка классов), как у Java, что позволяет получить доступ к тысячам уже существующих высококачественных библиотек.
Наслаждайтесь туром!
Для продолжения знакомства предлагаю перейти на следующую страницу нашего тура.
Contributors to this page:
Contents
- Введение
- Основы
- Единобразие типов
- Классы
- Значения Параметров По умолчанию
- Именованные Аргументы
- Трейты
- Кортежи
- Композиция классов с трейтами
- Функции Высшего Порядка
- Вложенные Методы
- Множественные списки параметров (Каррирование)
- Классы Образцы
- Сопоставление с примером
- Объекты Одиночки
- Регулярные Выражения
- Объект Экстрактор
- Сложные for-выражения
- Обобщенные Классы
- Вариантность
- Верхнее Ограничение Типа
- Нижнее Ограничение Типа
- Внутренние классы
- Члены Абстрактного Типа
- Составные Типы
- Самоописываемые типы
- Контекстные параметры, также известные, как неявные параметры
- Неявные Преобразования
- Полиморфные методы
- Выведение Типа
- Операторы
- Вызов по имени
- Аннотации
- Пакеты и Импорт
- Объекты Пакета