Wie können Sie beim überladen einer Funktion in ActionScript?
Möchte ich eine Funktion in der Lage sein, in verschiedenen Arten. AS3 unterstützt nicht überladen direkt... so kann ich nicht Folgendes tun:
//THIS ISN'T SUPPORTED BY AS3
function someFunction(xx:int, yy:int, someBoolean:Boolean = true){
//blah blah blah
}
function someFunction(arr:Array, someBoolean:Boolean = true){
someFunction(arr[0], arr[1], someBoolean);
}
Wie kann ich es umgehen, und haben immer noch eine Funktion, die in der Lage ist, Argumente verschiedener Typen?
- Ich bin sicher, du bekommst deine Antworten, aber ich bin nur courious warum würden Sie wollen, um die Methode überladen? Manchmal habe ich mich zu einem bestimmten Punkt, wenn das wirklich geholfen hätte, um fix eine schnelle problem, aber ich concider es SCHLECHTE PRAXIS, so dass ich nicht tun es.
- Ich Stimme mit Mattias. W/o native Unterstützung für die überlastung, ist es schlechte Praxis, um eine Funktion akzeptieren, variable Parameter (es sei denn in sehr, sehr speziellen Situationen, die haben nichts zu tun mit überlastung)
- Die Methode überladen ist eine unglaublich praktische Ergänzung zu jeder Sprache. Es würde Zeug wie Mathe Klassen so viel einfacher; nicht mehr multPoint(), multScalar (), etc, können Sie nur haben, mult()
- Cool. Jede gute Beispiele dafür?
- es ist nicht wirklich unterstützte in as3. die beste, die ich gesehen habe, ist so etwas wie zzzzBov Antwort:
function mult( param:* ):void { if (param is Point) this._multPoint(); else if (param is Number) this._multScalar(); }
- Ich Stimme mit peeps oben. Die Methode Überladen mit erstaunlich sein, wenn einheimische.. Alle "Hacks" sind es nicht Wert, die Umsetzung Zeit!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nur wollen, um in der Lage sein zu akzeptieren jede Art, die Sie verwenden können
*
zu ermöglichen, jede Art:Wenn Sie eine große Anzahl von verschiedenen Parametern, wo die Reihenfolge unwichtig ist, verwenden Sie ein Objekt Optionen:
Wenn Sie eine variable Anzahl von Parametern, die Sie verwenden können, die
...
- parameter (rest) :Fälle, in denen Sie aufrufen müssen, eine gemeinsame Funktion zu einer Anzahl von Klassen, sollten Sie die Schnittstelle üblich, jede Klasse:
Nur haben könnten:
Diese Weise können Sie ganz einfach in einer Schleife durch deine Argumente und so zu (und auch check der argument-Typ):