Полиморфизм — это возможность использования единого интерфейса сущностями различных типов. По сути, это свойство позволяет различным типам данных взаимодействовать с одной и той же функцией, в результате чего этим типам становится свойственно одинаковое поведение. Для «чистой» реализации полиморфизма в Elixir существует механизм протоколов.
Создадим простенький протокол для перевода значений температуры по шкале Кельвина или Фаренгейта в градусы Цельсия.
Итак, конвертеры для шкал Кельвина и Фаренгейта готовы. Опробуем их на практике:
А теперь попытаемся конвертировать какой-нибудь тип данных, не содержащий реализацию функции to_celsius:
Если необходимо охватить все типы данных, то создайте для них отдельную реализацию для типа Any. И наконец, рекомендую обратить внимание на исходный код Enum и String.Char, которые являются прекрасными примерами полиморфизма в Elixir.
Один-два раза в неделю присылаем тёплые письма об Эликсире: переводы самых интересных статей до их появления в открытом доступе, анонсы событий и вкусные бонусы.
Обязательно подтверди почту, перейдя по ссылке в письме, иначе мы не сможем делиться с тобой полезностями.