Ich habe noch nie von Multiple Dispatch gehört, aber nach einem Blick auf die Wikipedia-Seite sieht es sehr ähnlich wie MD ist eine Art von Polymorphie, wenn mit den Argumenten zu einer Methode verwendet.
Polymorphismus ist im Wesentlichen das Konzept, dass ein Objekt als jeder Typ, der es ist, gesehen werden kann. Also, wenn Sie ein Auto und einen LKW haben, können sie beide als ein Fahrzeug gesehen werden. Dies bedeutet, dass Sie für jede eine beliebige Vehicle-Methode aufrufen können.
Mehrere Versand sieht ähnlich, in dem Sie Methoden mit Argumenten von mehreren Typen aufrufen können, aber ich sehe bestimmte Anforderungen in der Beschreibung nicht. Erstens scheint es keinen gemeinsamen Basistyp zu erfordern (nicht dass ich mir vorstellen könnte, DAS ohne void * zu implementieren), und es können mehrere Objekte beteiligt sein.
Anstatt die Methode Start() für jedes Objekt in einer Liste aufzurufen (ein klassisches Beispiel für Polymorphie), können Sie eine an anderer Stelle definierte Methode StartObject (Object C) aufrufen, um den Argumenttyp zur Laufzeit zu überprüfen und handle es angemessen. Der Unterschied besteht darin, dass die Methode Start() in die Klasse integriert werden muss, während die Methode StartObject() außerhalb der Klasse definiert werden kann, damit die verschiedenen Objekte nicht mit einer Schnittstelle übereinstimmen müssen.
Was könnte schön sein, wenn die Methode Start() mit verschiedenen Argumenten aufgerufen werden musste. Vielleicht Car.Start (Key carkey) vs. Missile.Start (int launchCode)
Aber beide konnten als Startobject (thecar) oder Startobject (theMissile)
Interessantes Konzept ...
Dies ist eine ziemlich gute Antwort - wenn Sie kurze Codeschnipsel fügen Sie ein Beispiel von jedem zu zeigen, ich glaube, ich es als Antwort akzeptieren würde. – raldi
Dort gehen Sie. :) – jop
Hervorragende Antwort! A ++++++ würde von wieder – raldi