Duck typing – Wikipedia, wolna encyklopedia

Duck typing – rozpoznawanie typu obiektu nie na podstawie deklaracji, ale przez badanie metod udostępnionych przez obiekt. Technika ta wywodzi się z powiedzenia: „jeśli chodzi jak kaczka i kwacze jak kaczka, to musi być kaczką”.

Duck typing zazwyczaj wykorzystuje się w dynamicznych językach programowania takich jak Python, Ruby, Groovy czy JavaScript. W językach z typowaniem statycznym częściej stosuje się polimorfizm.

Przykłady

[edytuj | edytuj kod]
class Kaczka   def kwacz     puts "kwa kwa"   end end  # kwacząca klasa Slowik # wyposażona w taką samą metodę jak klasa Kaczka class Slowik   def kwacz     puts "fiu fiu"   end end  # funkcja wywołująca metodę kwacz() tylko wtedy, # gdy przekazywany jej jako argument obiekt ją posiada def kwacz_kaczuszko(k)   k.kwacz if k.respond_to? :kwacz end  # wywołanie funkcji kwakania na obiekcie typu Kaczka kwacz_kaczuszko(Kaczka.new)  # wywołanie kwakania na obiekcie typu Słowik # "słowik kwacze jak kaczka, więc musi to być kaczka" kwacz_kaczuszko(Slowik.new)