↓
 ↑
Регистрация
Имя/email

Пароль

 
Войти при помощи
Временно не работает,
как войти читайте здесь!
StragaSevera
28 января 2020
Aa Aa
#айтишный_быт
Я наконец-то въехал в ковариантность и контравариантность.
Если мы пообещали выдать кому-то животное и выдаем кота - это ковариантность.
Если кто-то требует от нас животное и мы выдаем ему кота - это контравариантность.
А если мы пообещали выдать кота, а выдаем рандомное животное, или если от нас требуют кота, а мы даем в ответ первое животное, что попалось к нам в руки - это ошибка приведения типов =-)
28 января 2020
6 комментариев из 22
П_Пашкевич
Неее, о микроконтроллерах)
EnGhost
Логично :)
Lucia Malfoy
интерфейс ФабрикаЖивотных{
Животное сотворить();
}

класс ФабрикаКотов реализует ФабрикаЖивотных{
Кот сотворить();
}

интерфейс ПожирательКотов{
Пустота пожирать(Кот кот);
}
класс ПожирательКотовИЛюдей реализует ПожирательКотов{
Пустота пожирать(Кот|Человек животное);
}
Lucia Malfoy
Хм, это уже какая-то функциональщина выходит, с объединениями типов)
Lucia Malfoy
StragaSevera
Lucia Malfoy
Хм, это уже какая-то функциональщина выходит, с объединениями типов)

union-типы и функциональщина не связаны же)

без юнионов можно так написать:


класс Кот расширяет Животное;

класс ПожирательВсехЖивотных реализует ПожирательКотов{
Пустота пожирать(Животное животное);
}

и это удовлетворяет контракту, потому что ПожирательВсехЖивотных пожирает в том числе и Котов
По наследованию мне кажется очень иллюстративным кэрролловский Снарк. Но это оффтопом, гм.

>Если мы пообещали выдать кому-то животное и выдаем кота - это ковариантность.
>Если кто-то требует от нас животное и мы выдаем ему кота - это контравариантность.
Не всекаю сходу тонкую разницу между "обещали" и "требуют". На котах для меня слишком сложно.
https://habr.com/ru/post/218753/ мне кажется, хорошая статья?
https://ru.stackoverflow.com/questions/516687/В-чем-суть-ковариантности-и-контравариантности-делегатов или вот, про тачки норм прям.
ПОИСК
ФАНФИКОВ











Закрыть
Закрыть
Закрыть