интерфейс\протокол, а достаточно в реализации метода его указать в роли входных данных этот интерфейс\протокол.
Если владеете строго-типизированными яп, хотелось бы узнать как там это работает.
К примеру: есть функция которая принимает объект user с интерфейсом IUser[getAge, getName] с двумя методами. Если я закину в эту функцию экземпляр класса(который не наследует интерфейс), НО у него есть методы getAge и getName, то ошибка будет? ( с точки зрения строго-типизированного яп)
Да, ошибка будет
Я смогу проверку типов по прежнему делать?
Для инверсии зависимостей вообще не обязательно никакие протоколы декларировать.
С точки зрения строго типизированного языка с нормальными интерфейсами никакой ошибки не будет. Например, так работают протоколы в питоне и интерфейсы в го. А вот в джаве интерфейсы не интерфейсы по факту, а типы
Последнее, помнится, про различие структурной и номинативной типизации, строгость тут ни при чём
Ну это же читается как "типы не типы по факту, а типы"
Нет. Интерфейсы и типы - разные вещи
Нет. Просто разные способы определения принадлежности значения к типу
Ладно. Если мы ограничиваемся теорией типов, то интерфейсов вообще не существует, есть только типы.
Обсуждают сегодня