![]() #айтишный_быт
Я наконец-то въехал в ковариантность и контравариантность. Если мы пообещали выдать кому-то животное и выдаем кота - это ковариантность. Если кто-то требует от нас животное и мы выдаем ему кота - это контравариантность. А если мы пообещали выдать кота, а выдаем рандомное животное, или если от нас требуют кота, а мы даем в ответ первое животное, что попалось к нам в руки - это ошибка приведения типов =-) 28 января 2020
3 |
![]() |
|
{Евгений}
Э-м-м, нет, современное поколение прекрасно владеет SODD - Stack Overflow-Driven Development ;-) |
![]() |
|
П_Пашкевич
Ну так-то и сейчас вставки на асме делают не парясь если надо. А что-то вообще исключительно на асме пишут. 1 |
![]() |
|
EnGhost
Предполагаю, что речь идёт о драйверах и т.п.? |
![]() |
|
П_Пашкевич
Неее, о микроконтроллерах) 2 |
![]() |
|
EnGhost
Логично :) |
![]() |
Lucia Malfoy
|
интерфейс ФабрикаЖивотных{
Животное сотворить(); } класс ФабрикаКотов реализует ФабрикаЖивотных{ Кот сотворить(); } интерфейс ПожирательКотов{ Пустота пожирать(Кот кот); } класс ПожирательКотовИЛюдей реализует ПожирательКотов{ Пустота пожирать(Кот|Человек животное); } |
![]() |
|
Lucia Malfoy
Хм, это уже какая-то функциональщина выходит, с объединениями типов) |
![]() |
Lucia Malfoy
|
StragaSevera
Lucia Malfoy Хм, это уже какая-то функциональщина выходит, с объединениями типов) union-типы и функциональщина не связаны же) без юнионов можно так написать: класс Кот расширяет Животное; класс ПожирательВсехЖивотных реализует ПожирательКотов{ Пустота пожирать(Животное животное); } и это удовлетворяет контракту, потому что ПожирательВсехЖивотных пожирает в том числе и Котов |
![]() |
|
По наследованию мне кажется очень иллюстративным кэрролловский Снарк. Но это оффтопом, гм.
>Если мы пообещали выдать кому-то животное и выдаем кота - это ковариантность. >Если кто-то требует от нас животное и мы выдаем ему кота - это контравариантность. Не всекаю сходу тонкую разницу между "обещали" и "требуют". На котах для меня слишком сложно. https://habr.com/ru/post/218753/ мне кажется, хорошая статья? https://ru.stackoverflow.com/questions/516687/В-чем-суть-ковариантности-и-контравариантности-делегатов или вот, про тачки норм прям. |