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

Пароль

 
Войти при помощи
Временно не работает,
как войти читайте здесь!
StragaSevera
28 января 2020
Aa Aa
#айтишный_быт
Я наконец-то въехал в ковариантность и контравариантность.
Если мы пообещали выдать кому-то животное и выдаем кота - это ковариантность.
Если кто-то требует от нас животное и мы выдаем ему кота - это контравариантность.
А если мы пообещали выдать кота, а выдаем рандомное животное, или если от нас требуют кота, а мы даем в ответ первое животное, что попалось к нам в руки - это ошибка приведения типов =-)
28 января 2020
20 комментариев из 22
надеюсь, в процессе ни один кот не пострадает?))
келли малфой
Не пострадает, для этого и нужна типобезопасность =-) А вот если бы ее не было, то программа пыталась бы кормить кота едой для хомячков)))
Боже, этот тред так прекрасен)))
BonnieBlueButler
Спасибо ^_^ Котики все делают лучше, даже дискуссию об обобщенных типах)
Котики Шредингера.
Эх... Помню, по молодости, когда я себе под научные нужды сам писал программы на паскале, какие я грязные хаки использовал, делая приведение типов указателей! Это помимо записей с case-полями и директивы absolute :)
П_Пашкевич
Да, были люди в наше время, не то что нынешнее племя ;-)
StragaSevera
Ну, тогда, помимо всего прочего, не стояла проблема кроссплатформенности. Тогда и вставки на ассемблере делали, не парясь, если было надо.

Причём, что забавно: в биологических НИИ программирование осваивали люди с самым разным образованием: я со своим "биолог-зоолог" в дипломе был вовсе не уникумом в этом отношении. А навык, кстати, полезный: до сих пор, бывает, пригождается :)
П_Пашкевич
Хех. Любопытно =-)
А кто, думаете, писал программы под специфические задачи, например, связанные с нестандартными АЦП или с нестандартной обработкой данных? Инженеров откровенно не хватало.
StragaSevera
П_Пашкевич
Да, были люди в наше время, не то что нынешнее племя ;-)
Мы воровали скрипты каждый день, а современным просто лень!
{Евгений}
Э-м-м, нет, современное поколение прекрасно владеет SODD - Stack Overflow-Driven Development ;-)
П_Пашкевич
Ну так-то и сейчас вставки на асме делают не парясь если надо. А что-то вообще исключительно на асме пишут.
EnGhost
Предполагаю, что речь идёт о драйверах и т.п.?
П_Пашкевич
Неее, о микроконтроллерах)
EnGhost
Логично :)
Lucia Malfoy
интерфейс ФабрикаЖивотных{
Животное сотворить();
}

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

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

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

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


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

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

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

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











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