2009-05-11 17 views
23

Kann mir jemand sagen, warum ActionScript 3, eine statisch typisierte Sprache, keine Generika enthält? Ist es zu viel Arbeit? Eine historische Sache? Gibt es einen Weg, es zu "fälschen", den ich noch nicht abgeholt habe?Warum hat ActionScript keine "Generika"?

Bearbeiten: vielen Dank für die Antworten! Die Vector Klasse ist im Grunde, was ich gesucht habe, und die anderen Informationen waren auch hilfreich.

+1

Ich sah 'Vector ' und freute mich, dass ActionScript generische Generika hatte, von denen ich irgendwie noch nichts wusste. *Seufzer*. Ich hätte es besser wissen sollen, als dass ich mir Hoffnungen mache. –

+0

Sie können Haxe versuchen. Es hat Generika und andere coole Features. Und es kompiliert in-the-box zu Flash. haxe.org & try.haxe.org –

Antwort

23

Die neue Vector class ist eine Form von Generics, die Actionscript 3 jetzt unterstützt, wenn sie für Flash Player 10 kompiliert wird. Sie unterstützen noch nicht die Spezifikation Ihrer eigenen generischen Klassen.

Ich denke, Adobe wird schließlich den ES4-Standard implementieren. Es wäre schön, wenn sie einen Konkurrenten hätten, der sie schneller in die richtige Richtung schieben könnte. Ich habe etwas mehr von den Updates von AS3 erwartet, als sie zu CS4 gewechselt sind, aber ich nehme an, dass die revolutionäre Vector-Klasse ausreichen wird.

Es sieht so aus, als hätten sie viel Zeit damit verbracht, die Bibliotheken für Flex und AIR aufzustocken, vielleicht werden sie später die Sprachunterstützung verbessern, aber es ist wahrscheinlich keine echte Priorität. Denken Sie daran, Adobe ist für das Geld da, nicht für das Wohlfühlen, die süßeste Sprache zu machen.

+3

... nicht wahr? Erstens gibt es keinen "ES4-Standard", und es wird wahrscheinlich nie mehr sein, seit Ecma ihn aufgegeben hat. Zweitens hat Adobe * den Entwurf des ES4-Standards implementiert, und sie sind die einzigen, die dies getan haben. (Sie schrieben eine VM dafür und spendeten sie an die Mozilla-Stiftung, bevor Ecma sie fallen ließ.) -> http://en.wikipedia.org/wiki/Ecmascript – fenomas

+2

@fenomas Fühlen Sie sich frei, den Beitrag zu bearbeiten es ist richtiger! – Kekoa

+0

Jetzt, wo Google Dash sie ein wenig erschreckt hat, haben sie endlich begonnen, über die Verbesserung der Sprachfunktionen mit so ziemlich allem, was wir seit Jahren fragen, zu sprechen - nachschlagen "Actionscript Next". – JTtheGeek

0

Lassen Sie uns zunächst geeignete Container und Algorithmen in Actionscript erhalten und sorgen dann über Generika ...

AS3 von Javascript nicht sehr verschieden ist, btw, so dass Ihre Frage würde auch Art gelten für JS.

+1

mmm nicht so sehr. Bei Verwendung * ohne * Typisierung und Klassenschreibweise ist ActionScript/JavaScript sehr ähnlich ... Wenn Sie jedoch mit der Verwendung von Paketen, Klassensyntax und statischer Typisierung beginnen, wird die Art und Weise, wie Sie die beiden Sprachen verwenden, ziemlich unterschiedlich. –

+8

Nun, das ist so, als ob C++ oder besser Objective-C "nicht sehr verschieden" von C ist.In der Tat, obwohl C++/Obj-C eine Obermenge von C ist, ist es nicht richtig zu sagen, dass sie im Grunde die gleiche Sache sind. – Kekoa

2

Ich glaube, es ist eine historische Sache. ActionScript basiert auf ECMAScript (JavaScript basiert ebenfalls auf ECMAScript). ECMAScript ist eine dynamisch typisierte Sprache, was bedeutet, dass Variablen ihren Typ nicht deklariert haben. Generics sind in statisch typisierten Sprachen hilfreicher, wobei der Typ der Variablen im Voraus deklariert wird. In einer statisch getippten Sprache, ohne Generika, bleiben Sie ständig im root-Objekt (z. B. Objekt in Java). Dies ist in ECMAScript kein Problem, da Sie beliebige Daten in eine beliebige Datenstruktur einfügen können.

Warum hat ActionScript keine Generics hinzugefügt, als sie ECMAScript statische Typisierung hinzugefügt haben? Ich kann mir dessen nicht sicher sein, aber ich denke, die Prämisse Ihrer Frage ist ein bisschen deprimiert - es gibt generische Container, wie Vector. Ich könnte denken, dass sie die dynamisch typisierten Container von ECMAScript (Objekte und Arrays) für die Abwärtskompatibilität behalten würden, aber sie haben das zwischen AS2 und AS3 bereits gebrochen, also bin ich mir nicht sicher.

2

parameteric Typen (das Wort ‚Generika‘ in der Regel in ECMAScript für generic methods, anstatt die Kombination von Parametertypen und Laufzeit-Polymorphismus verwendet in Java verwendet werden) waren proposed als Teil ES4, aber ES4 gebrochen und viel vom Typ System Vorschläge für ES (einschließlich der in ActionScript implementierten Teile) gehen nicht in die nächste Version ein. Ich kann nicht sagen, ob Adobe selbst so gehen würde oder nicht.

Verwandte Themen