2008-12-01 11 views
20

Una cosa que realmente me gusta de AS3 sobre AS2 es la cantidad de comprobación de tipo de tiempo de compilación que agrega. Sin embargo, parece ser algo deficiente en que no hay una estructura de enumeración verificada por tipo disponible. ¿Cuál es una buena (mejor/aceptada) forma de hacer tipos enumerados personalizados en AS3?¿Enumerados en AS3/Flash/Flex?

Respuesta

17

su respuesta después del salto :-)

Enumerations with classes

+0

¡Buena respuesta, gracias! – HanClinto

+0

El enlace está roto. – Joe

+0

mientras mi edición está siendo revisada Creo que este enlace sería similar al proporcionado originalmente: [Enumeraciones con clases] (http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f2f.html) – gltovar

1

lo sé, esto es un poco anticuado y no responde exactamente a su pregunta, pero es posible que quieras echa un vistazo a haXe. También puede usarlo para generar as3 para usted, además de que hay muchas otras razones para usarlo. Pero esto realmente saldría del tema ...

+0

Cool, gracias por la sugerencia! – HanClinto

1

Recientemente descubrí que as3commons library tiene una buena clase base de ayuda Enum para la implementación de enums.

1

Con el fin de ser un cierto enum que necesita para los dos:

  • Enforce seguridad de tipo
  • prevenir los casos deshonestos

Pocas de las soluciones simples hacer ambas cosas, y la base las clases que sí lo son son demasiado complejas.

Mi favorito actual es el siguiente estilo - seguro y simple, y no se debe confundir a nadie:

public final class FruitEnum { 
    private static const CREATE:Object = {}; 

    public static const APPLE:FruitEnum = new FruitEnum(CREATE); 
    public static const ORANGE:FruitEnum = new FruitEnum(CREATE); 
    public static const BANANA:FruitEnum = new FruitEnum(CREATE); 

    public function FruitEnum(permission:Object) { 
     if (permission !== CREATE){ 
      throw new Error("Enum cannot be instantiated from outside"); 
     } 
    } 
} 

advertencia: He visto raras circunstancias en que una variable de inicialización lee un const enumeración antes se establece , pero en esos casos el problema se aplica igualmente a otras emulaciones de enumeraciones basadas en const.

Cuestiones relacionadas