Diese Frage wurde hier gestellt , erhielt jedoch schlechte Antworten und hat das Problem nicht geklärt. Ich glaube, es rechtfertigt es, es noch einmal zu fragen.
Ich verstehe, dass Sie Enten entweder mit dynamisch oder mit statisch typisierten Sprachen tippen können (Beispiele dafür sind jedoch selten, wie z. B. die Vorlagen von C ++).
Ich bin mir jedoch nicht sicher, ob es eine dynamisch getippte Sprache ohne Ententipp gibt.
Ententypisierung bedeutet, dass der Typ eines Objekts auf den Operationen und Attributen basiert, die es zu einem bestimmten Zeitpunkt hat. Gibt es eine Möglichkeit, dynamisches Tippen durchzuführen, ohne zwangsläufig das Enten-Tippen zu unterstützen?
Schauen wir uns zum Beispiel diesen Python-Code an:
def func(some_object)
some_object.doSomething()
something = Toaster()
func(something)
In dynamisch typisierten Sprachen ist der Typ eines Objekts nur zur Laufzeit bekannt. Wenn Sie also versuchen, eine Operation darauf auszuführen (z. B. some_object.doSomething()
), hat die Laufzeit nur eine Wahl : Sie muss überprüfen, ob die Art der some_object
Stützen doSomething()
genau die Ententypisierung ist oder nicht .
Ist es also möglich, dynamisch typisierte Sprachen zu haben, ohne Enten zu tippen? Bitte erkläre.
1 + "1"
. In Pythons Fall fehlt die Disziplin der Überprüfung so gut wie und es liegt an der Implementierung des Benutzercodes, die Typen zu überprüfen, ob der Benutzer (im Gegensatz zur Python-Laufzeit) dies nützlich findet. Beachten Sie auch, dass die Typisierung von Enten im Vergleich zur Typisierung von Nicht-Enten der nominellen vs. strukturellen Typisierung entspricht (siehe Wikipedia).