Duck typing
Z Wikipedii, wolnej encyklopedii
Duck typing (z ang. kacze typowanie) to 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ą".
Kacze typowanie znajduje najczęściej zastosowanie podczas rzutowania typów i przeciążania operatorów, w którym do określenia, czy obiekt może stworzyć wyrażenie z obiektem innego typu wykorzystywana jest odpowiednia metoda konwersji lub obsługi.
Przykłady [edytuj]
Metoda ta wykorzystywana jest przede wszystkim w językach programowania Python, Ruby, Groovy, Smalltalk oraz Go (język_programowania).
Ruby [edytuj]
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)