Утиная типизация — это принцип, согласно которому пригодность объекта определяется какие методы он поддерживает, а не его класс или тип — «если ходит как утка и крякает как утка, то это утка». В Ruby вас интересует то, что объект может делать (имеет метод), а не какого он типа. Это позволяет писать гибкий, полиморфный код без наследования или интерфейсов.
Принцип: поведение над типом
()
duck.quack
=
=
make_it_quack(.new)
make_it_quack(.new)
