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

Параметрические типы в 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 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто