Diskussion:Duck Typing
Ich möchte, dass diese Seite nocheinmal überarbeitet wird. Ich weiss nicht, wie man Text als Quellcode formatiert.
Weiterhin wäre eine inhaltliche Überprüfung vielleicht angebracht. Eine Erläuterung der Technik in anderen Sprachen wie bspw. Ruby mit Beispiel könnte auch noch hinzugefügt werden. e86 - Kommentar?
- Habe dir jetzt erstmal den Artikel umformatiert, dass es anschaulich aussieht. --mfg, NickKnatterton - Kommentar? 21:46, 19. Apr 2006 (CEST)
Ruby-Beispiel erklären
Kann mal jemand erklären, was an dem Beispiel das Duck Typing ist ? -- Amtiss, SNAFU ? 11:44, 23. Jun 2006 (CEST)
- Wenn ichs richtig verstanden habe ist der ausschlaggebende Punkt der das du die Methode sound() aufrufen, egal welchen Typ die Variable hat, sprich beim Duck-Typing muss man nicht ein Interface definieren das eine Methode sound() hat und dann entsprechend Cat und Duck davon ableiten, sondern kann einfach sound() aufrufen und es klappt automatisch wenn die Methode vorhanden ist. Waere eventuell sinnvoll ein Beispiel zu machen wie es ohne Duck Typing aussehen wuerde. -- 83.135.197.28 06:08, 18. Jul 2006 (CEST)
- Der Aspekt dass du keinen Interface definieren musst hat eher mit Ruby zu tun als mit DuckTyping. Ruby selbst kennt Interfaces als Sprachkonstrukt nicht(wohl aber Mixins die quasi Schnittstellen und Code enthalten). Das die Methode sound() des richtigen Objekts aufgerufen wird, passiert schon dadurch. weil das Objekt selbst weiss welche Methoden es implementiert. Das worum es bei DuckTyping im Kern geht, ist dass sicht umgebender Code keine Annahmen über die Klasse eines Objekten zu treffen braucht sondern nur von den wenigen Methoden ausgeht, die er verwendet. In Ruby gibt es z.B. die Klasse _StringIO_, die die Semantik von Dateien auf String anwendbar macht. Um z.B. Code zu testen der mit Dateien arbeitet, kann man dann einfach einen String anstatt einer echten Datei verwenden, ohne dass dieser etwas davon mitbekomm(natürlich nur wenn er nicht darauf besteht, dass das Objekt eine _File_ ist und einfach open,read,write und close benutzt).
- --KleinerPinguin 01:22, 27. Jul 2006 (CEST)
Geht das nur mir so oder:
Das Beispiel in Ruby hat nichts mit Variablen zu tun. Es werden Methoden aufgerufen.
- Das Ruby-Beispiel ist in seiner jetzigen Form Quatsch. --zeno 13:21, 6. Sep 2006 (CEST)
- Dem stimm ich zu. Aber mir fällt kein Beispiel ein, wo es zu erkennen wäre (vielleicht, dass der "+"-Operator sowohl für 3+4 als auch für "a"+"b" geht?). Außerdem müsste zu Compiler "Interpreter" ergänzt werden. --Briks 15:30, 23. Jan. 2007 (CET)
Ist das nicht auch bei Perl so?
Ich habs ywar noch nicht unter dem Begriff gehört, aber in Perl kann ich auch einer Variable verschiedene Datentypen zuweisen, indem ich sie einfach mit Werten belege. Wenn ich eine Variable $a mit einem Interger-Wert (z.B. 1) oder auch einem String, der einen Integer repräsentiert (z.B. "1"), belege, dann kommt in beiden Fällen nach Aufruf von $a++ 2 raus. Wenn $a jetzt ein String ist (z.B. "abcd"), dann kommt nach Aufruf von $a++ "abce" raus.
Duck Typing heisst also doch in etwa, dass die Sprache nicht streng typisiert ist und dass man mehr oder minder fröhlich die Datentypen wechseln kann, ohne ständig irgendwas casten zu müssen (wie etwa in Java). Oder nicht?
Ansonsten kann man da auch noch ein Perl-Beispiel mit reinbringen --Knallkopf 01:18, 9. Feb. 2007 (CET)