Sobes.tech
Back to questions
Junior — Middle
62

Можете ли объяснить концепцию duck typing и как она применяется в динамических языках программирования?

Companies where asked
ТОП КЕЙС

Answer from AI

sobes.tech AI

Duck typing — это концепция в динамических языках программирования, при которой тип объекта определяется не по его классу или иерархии наследования, а по наличию определённых методов и свойств.

Фраза "Если что-то выглядит как утка, плавает как утка и крякает как утка, значит это утка" отражает суть: если объект поддерживает нужный интерфейс (методы), его можно использовать как нужный тип.

В C# это не типично, так как язык статически типизирован, но с появлением динамического типа (dynamic) можно применять duck typing:

void MakeItQuack(dynamic obj) {
    obj.Quack(); // Компиляция пройдет, ошибка будет только во время выполнения, если метода нет
}

class Duck {
    public void Quack() { Console.WriteLine("Quack!"); }
}

MakeItQuack(new Duck());

Таким образом, duck typing позволяет писать более гибкий код, не зависящий от конкретных типов, а только от наличия нужных методов.