Параметрические типы в Scala | OTUS
🔥 Начинаем BLACK FRIDAY!
Максимальная скидка -25% на всё. Успейте начать обучение по самой выгодной цене.
Выбрать курс

Курсы

Программирование
iOS Developer. Basic
-25%
Python Developer. Professional
-25%
Разработчик на Spring Framework
-25%
Golang Developer. Professional
-25%
Python Developer. Basic
-25%
iOS Developer. Professional
-25%
Highload Architect
-25%
JavaScript Developer. Basic
-25%
Kotlin Backend Developer
-25%
JavaScript Developer. Professional
-25%
Android Developer. Basic
-25%
Unity Game Developer. Basic
-25%
Разработчик C#
-25%
Программист С Web-разработчик на Python Алгоритмы и структуры данных Framework Laravel PostgreSQL Reverse-Engineering. Professional CI/CD Vue.js разработчик VOIP инженер Программист 1С Flutter Mobile Developer Супер - интенсив по Kubernetes Symfony Framework Advanced Fullstack JavaScript developer Супер-интенсив "Azure для разработчиков"
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK
-25%
DevOps практики и инструменты
-25%
Архитектор сетей
-25%
Инфраструктурная платформа на основе Kubernetes
-25%
Супер-интенсив «ELK»
-16%
Супер-интенсив «IaC Ansible»
-16%
Супер-интенсив "SQL для анализа данных"
-16%
Базы данных Сетевой инженер AWS для разработчиков Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Внедрение и работа в DevSecOps Администратор Linux. Виртуализация и кластеризация Нереляционные базы данных Супер-практикум по использованию и настройке GIT IoT-разработчик Супер-интенсив «СУБД в высоконагруженных системах»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Параметрические типы в Scala

В языке программирования Scala существует возможность параметризовать трейт, класс либо его метод некоторым количеством типов. Сделать это можно с помощью следующего синтаксиса:

Screenshot_1-1801-4c5171.png

Параметры типа можно применять внутри тела класса/трейта/метода различными способами. Один из них — написать функцию, которая станет вычислять композицию двух функций:

Screenshot_2-1801-bb782e.png

На примере можно выше можно продемонстрировать очередную особенность системы типов в Scala — возможность выводить параметры-типы шаблонов. Если разработчик введет следующие 2 функции:

Screenshot_3-1801-7d7d17.png

он сможет вычислить их композицию, не указывая при этом цепочку типов:

Screenshot_4-1801-52f0d9.png

А это уже на деле эквивалентно следующему коду:

Screenshot_5-1801-72bc14.png

Итак, параметрические типы в Scala — довольно эффективное средство доказательства свойств программы. Представьте, что в базе данных сохранены объекты 2 типов: A и B. Вряд ли вы желаете, чтобы кто-либо мог добавлять объект типа А в коллекцию элементов типа B (к примеру, база данных является нереляционной, допустим, это MongoDB). Решение вопроса заключается в написании метода добавления в коллекцию следующим образом:

Screenshot_6-1801-438005.png

В примере выше можно добавить элемент в коллекцию соответствующего типа. Если же будет попытка добавить элемент А-типа в коллекцию элементов B-типа, возникнет ошибка компиляции. При этом предупреждение об этом появится, вероятнее всего, со стороны среды разработки ещё в процессе написания кода.

Следующий момент — возможность создания псевдонимов для параметрических типов, если в них заданы все либо несколько параметров. Например, вы сможете ввести список строк:

Screenshot_7-1801-086d53.png

Или же кортеж, один из параметров которого — это целое:

Screenshot_8-1801-311580.png

Конечно, это далеко не все возможности системы типов Scala, однако другие примеры выходят за рамки данной заметки.

Источник

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
🎁 Максимальная скидка!
Черная пятница уже в OTUS! Скидка -25% на всё!