2009-05-11 27 views
23

¿Alguien puede decirme por qué ActionScript 3, un lenguaje estáticamente tipado, no tiene genéricos? ¿Es demasiado trabajo? Una cosa histórica? ¿Hay alguna forma de "falsificarlo" que aún no haya recogido?¿Por qué ActionScript no tiene "genéricos"?

Editar: muchas gracias por las respuestas! La clase Vector es básicamente lo que estaba buscando, y la otra información también fue útil.

+1

Vi 'Vector ' y me entusiasmó que ActionScript tuviera genéricos de propósito general de los que de alguna manera todavía no tenía conocimiento. *Suspiro*. Debería haber sabido mejor que hacerme ilusiones. –

+0

Puedes probar Haxe. Tiene genéricos y otras características geniales. Y se compila en la caja para Flash. haxe.org & try.haxe.org –

Respuesta

23

El nuevo Vector class es una forma de genéricos que Actionscript 3 ahora admite cuando se compila para Flash Player 10. Aún no admiten la especificación de sus propias clases genéricas.

Creo que Adobe implementará finalmente el estándar ES4. Sería bueno si tuvieran un competidor que pudiera empujarlos más rápido en la dirección correcta. Esperaba un poco más de las actualizaciones de AS3 cuando se movieron a CS4, pero supongo que la revolucionaria clase Vector tendrá que ser suficiente.

Parece que pasaron mucho tiempo reforzando las bibliotecas para Flex y AIR, por lo que tal vez vuelvan a mejorar el soporte de idiomas más tarde, pero probablemente no sea una prioridad real. Recuerde, Adobe está ahí por el dinero, no por la sensación de hacer el lenguaje más agradable posible.

+3

... ¿eh? En primer lugar, no existe el "estándar ES4", y probablemente nunca lo habrá desde que Ecma lo abandonó. En segundo lugar, Adobe * implementó * el borrador del estándar ES4, y son prácticamente los únicos que lo hicieron. (Escribieron un VM para él y lo donaron a la fundación Mozilla, antes de que Ecma lo descartara). -> http://en.wikipedia.org/wiki/Ecmascript – fenomas

+2

@fenomas No dude en editar la publicación para hacer es más correcto! – Kekoa

+0

ahora que google dash los está asustando un poco, finalmente comenzaron a hablar sobre la mejora de las características del lenguaje con casi todo lo que hemos estado pidiendo durante años: búsqueda "Actionscript Next". – JTtheGeek

0

de primero obtener contenedores y algoritmos en ActionScript adecuadas y luego preocuparse por los genéricos ...

AS3 no es muy diferente de JavaScript, por cierto, por lo que su pregunta sería clase de aplicarse a JS, así Let.

+1

mmm no tanto. Cuando se usa * sin * tipeo y notación de clase, ActionScript/es/muy similar a JavaScript ... Pero cuando comienza a usar paquetes, sintaxis de clase y tipeo estático, la forma en que usa los dos idiomas se vuelve bastante diferente. –

+8

Bueno, eso es como decir que C++, o mejor, Objective-C, "no es muy diferente" de C.De hecho, aunque C++/Obj-C es un superconjunto de C, no es realmente correcto decir que básicamente son lo mismo. – Kekoa

2

Creo que es algo histórico. ActionScript se basa en ECMAScript (JavaScript también se basa en ECMAScript). ECMAScript es un lenguaje de tipado dinámico, lo que significa que las variables no tienen su tipo declarado. Los genéricos son más útiles en lenguajes tipados estáticamente, donde el tipo de variable se declara por adelantado. En un lenguaje estáticamente tipado, sin genéricos estás atrapado lanzando todo el tiempo desde el objeto raíz (por ejemplo, Object en Java). Esto no es un problema en ECMAScript, porque puede poner lo que desee en cualquier estructura de datos.

¿Por qué ActionScript no agregó genéricos cuando agregaron tipeo estático a ECMAScript? No puedo estar seguro de eso, pero creo que la premisa de su pregunta está un poco desactualizada: hay contenedores genéricos, como Vector. Podría pensar que mantendrían los contenedores de ECMAScript de tipo dinámico (objetos y matrices) para compatibilidad con versiones anteriores, pero ya lo rompieron entre AS2 y AS3, así que no estoy seguro.

2

tipos parameteric (la palabra 'genéricos' se utiliza generalmente en ECMAScript para generic methods, en lugar de la combinación de tipos paramétricas y polimorfismo de tiempo de ejecución utilizadas en Java) fueron proposed como parte de ES4, pero ES4 fracturó y gran parte del sistema de tipos propuestas para ES (incluidas las partes implementadas en ActionScript) no entrarán en la próxima versión. No puedo decir si Adobe querría ir por ese camino por sí mismo.

Cuestiones relacionadas