Duck typing เป็นหลักการที่ความเหมาะสมของอ็อบเจกต์ถูกกำหนดโดย เมธอดที่มันตอบสนองได้ ไม่ใช่คลาสหรือชนิดของมัน — "ถ้ามันเดินเหมือนเป็ดและร้องเหมือนเป็ด มันก็คือเป็ด" ใน Ruby คุณสนใจว่าอ็อบเจกต์ สามารถทำ บางอย่างได้ (มีเมธอดนั้น) ไม่ใช่ว่ามันเป็นชนิดใด สิ่งนี้ทำให้เขียนโค้ดที่ยืดหยุ่นและมีลักษณะ polymorphic ได้โดยไม่ต้องใช้การสืบทอด (inheritance) หรือ interface
หลักการ: พฤติกรรมเหนือชนิด
()
duck.quack
=
=
make_it_quack(.new)
make_it_quack(.new)
