warum überlastung keine Unterstützung in Actionscript?
Action script entwickelt, basierend auf der Objekt-orientierten Programmierung, aber warum wird es nicht unterstützt das überladen von Funktionen?
Tut, Flex-support-überlastung?
Wenn ja, erläutern Sie bitte kurz mit einem realen Beispiel.
- Flex ist "nur" ein framework.. so bietet es sich an nichts mehr dann actionscript 3
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie Sie sagen, das überladen von Funktionen wird nicht unterstützt, in Action-Script (und daher auch nicht im Flex).
Aber die Funktionen können default-Parameter, wie hier:
DoSomething
aufgerufen werden kann in 4 verschiedenen Arten:Dieses Verhalten vielleicht ist da Action Script folgt der ECMA-Skript-standard. Eine Funktion ist in der Tat eine Eigenschaft des Objekts, so, wie Sie es NICHT KÖNNEN, haben zwei Eigenschaften mit dem gleichen Namen, Sie KÖNNEN NICHT zwei Funktionen mit dem gleichen Namen. (Dies ist nur eine Hypothese)
Hier ist die Standard - ECMA-262 (ECMAScript Language Specification), die in Abschnitt 13 (Seite 83 der PDF-Datei) sagt, dass, wenn Sie deklarieren eine Funktion wie
Eine Eigenschaft erstellen, die aktuelle variable-Objekt mit dem Namen
Identifier
und Wert entspricht, um ein Function-Objekt wie folgt erstellt:So, das ist, warum Sie können nicht überladen einer Funktion, weil Sie kann nicht mehr als eine-Eigenschaft der aktuellen Variablen-Objekt mit dem gleichen Namen
Es ist erwähnenswert, dass das überladen von Funktionen ist nicht eine OOP-Sprache, es ist Sprache Konvention. OOP-Sprachen oft haben überladen Unterstützung, aber es ist nicht notwendig.
Als lk Noten, können Sie Ungefähre Angaben es mit der Struktur, die er zeigt. Alternativ können Sie dies tun:
Diese Funktion benötigen Sie die ersten beiden Argumente, und übergeben Sie dann den rest in ein array, das kannst du dann handhaben, wie gebraucht. Dies ist wahrscheinlich der flexiblere Ansatz.
rest
ist einArray
dem Komma getrennte Parameter.Gibt es einen anderen Weg - Funktion mit beliebigen Parametern gibt nichts.
Können Sie nicht überladen, aber Sie können default-Werte für Argumente, das ist praktisch das gleiche, aber es zwingt Sie planen Ihre Methoden vor manchmal.
Der Grund, warum es nicht wahrscheinlich ist meist ein Zeit - /return-on-investment-Problem für Adobe in der Konzeption und schreiben der Sprache.
Wahrscheinlich, weil Actionscript-sucht-Funktionen name der Funktion zur Laufzeit, anstatt Speicherung von name und Parameter bei der Kompilierung.
Diese Funktion macht es einfach, hinzufügen und entfernen von Funktionen aus dynamischen Objekten, und die Fähigkeit, sich und Anruf-Funktionen, indem Namen mit
object['functionName']()
, aber ich kann mir vorstellen, dass es vereinfacht die Implementierung von überlastung sehr schwierig, ohne ein Chaos dieser features.