2009-07-25 7 views

Antwort

0

Grundsätzlich keine. Das Finale ist endgültig und kann nicht verlängert werden. Sie könnten eine Klasse erstellen, die alle die gleichen Methoden wie die Number-Klasse hat, aber es wäre immer noch nicht BE eine Nummer, soweit der Compiler betroffen ist.

Um ehrlich zu sein sollte nie ein Grund sein, dass Sie aus diesen Klassen erweitern sollten.

Soweit Proxies gehen Sie in Erwägung ziehen könnte, eine Fabrik-Klasse zu machen, die eine vorformatierte Zeichenfolge/Zahl zB zurückgibt:

var myString:String= StringFactory.asCurrency("50"); // "$50.00" 
+0

Es gibt viele Gründe dafür, dass sich eine Klasse wie ein Primitiv verhält. Ein einfaches Beispiel wäre der Wunsch, eine Unterklasse von Number (wie uint) zu haben, die einen eingeschränkten Wert hat, oder eine Unterklasse von String, die eine bestimmte Länge haben muss. Sie können pseduo-Unterklasse Array über Proxy, um zusätzliches Verhalten in den Array-Access-Operator zu setzen - Ich suche nach einer Möglichkeit, ähnliche Aufgaben durchzuführen. – JMHNilbog

+0

Natürlich! Niemand muss jemals nahtlos Metadaten zu einem String hinzufügen. – user1244215

0

wie bereits erwähnt von groady, ist dies nicht möglich ... auch nicht in die Szenarios, die Sie beschrieben haben ... aber die Sache ist, dass zur Laufzeit der Typdetektionsmechanismus ziemlich einfach ist ... suchen Sie das Traits-Objekt und prüfen Sie, ob es mit einer Klasse/Unterklasse übereinstimmt oder ob es explizit implementiert und interagiert. In jedem anderen Fall werden Sie Fehler haben ... Sie können Proxies verwenden, um Ihren eigenen Array-Zugriff zu implementieren ... sie werden jedoch keine Arrays sein und sie daher an eine Funktion übergeben, die Array erwartet, was zu Fehlern führen wird ... Außerdem können Sie in AS3 nicht überladen Sie werden es wirklich schwer haben ... Sie könnten eine Klasse für numerische Werte erstellen, aber dann müssen Sie Methoden wie addieren, subtrahieren usw. verwenden ... ... es gibt jedoch eine related request on jira ... immer noch, das wird Lösen Sie Ihr Problem nicht vollständig, denn Sie können nicht kontrollieren, wie ein Objekt auf Operatoren reagiert ... Wenn Sie im ECMA-Kompatibilitätsmodus kompilieren, werden Sie wahrscheinlich die strengen Laufzeitprüfungen umgehen können, aber andererseits verlieren Sie viel Geschwindigkeit ... das beste, was wahrscheinlich wirklich eine Klasse erstellen, die durch Methoden anstelle von Operatoren ... nicht sehr bequem, aber die besten AS3 Angebote ...

greetz

manipuliert werden muss

back2dos