[ArrayElementType] Metadata tag
- Publicado en: Flex Builder, Tips
- Escrito por A. Ramón Molina Milla
- 3 Comentarios
- Enlace Permanente
La metadata, conocida en otros lenguajes como anotaciones, es una potente herramienta para comunicarse con Flex Builder que permite realizar un abanico de tareas que van desde la generación de código hasta chequeos especiales en tiempo de compilación pasando por integración con el sistema de autocompletado del IDE.
En esta entrada veremos el funcionamiento de la anotación ArrayElementType
, con la cual podemos definir Arrays tipados en MXML.
Sintaxis
[ArrayElementType("elementType")]
Argumentos:
- elementType (obligatorio) es un nombre de clase completo. ej:
com.madeinflex.Usuario
Posicionamiento
Esta anotación debe situarse antes de la declaración de una variable de tipo Array
.
Descripción
La anotación en cuestión permite definir el tipo de dato de los elementos que son aceptados en un Array
.
Esta funcionalidad solo está disponible en Flex Builder en tiempo de compilación y cuando declaramos dicho Array
mediante MXML.
Ejemplo
Ejemplo.mxml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?xml version = "1.0" encoding = "utf-8"?> <mx:Application xmlns:mx = "http://www.adobe.com/2006/mxml" xmlns:local = "*" xmlns:madeinflex = "com.madeinflex.*"> <local:ListaUsuarios> <local:usuarios> <madeinflex:Usuario uid = "5" nombre = "Carlos Rovira" /> <madeinflex:Usuario uid = "6" nombre = "Xavi Beumala" /> <madeinflex:Usuario uid = "6" nombre = "Albero Albericio" /> </local:usuarios> </local:ListaUsuarios> </mx:Application> |
com/madeinflex/Usuario.as
1 2 3 4 5 6 |
package com.madeinflex{ public class Usuario{ public var nombre:String; public var uid:int; } } |
ListaUsuarios.mxml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?xml version = "1.0" encoding = "utf-8"?> <mx:VBox xmlns:mx = "http://www.adobe.com/2006/mxml" width = "400" height = "300"> <mx:Script> <![CDATA[ [Bindable] [ArrayElementType( "com.madeinflex.Usuario" )] public var usuarios:Array; ]]> </mx:Script> <mx:TextInput text = "Hay { usuarios.length } usuarios" width = "100%" /> <mx:List labelField = "nombre" dataProvider = "{ usuarios }" width = "100%" /> </mx:VBox> |
Si modificamos Ejemplo.mxml y añadimos un elemento de cualquier tipo que no sea Usuario
, por ejemplo un String, obtendremos un error diciendo algo como: “In initializer for usuarios’: type String not assignable to target Array element type”:
Conclusión
Es un buen ejemplo de integración con Flex Builder a través de metadata pero la funcionalidad en si realmente no es demasiado útil ya que solo funciona para código MXML y en tiempo de compilación.
Nota: Si se requiere tener Arrays tipados en tiempo de ejecución ver la clase __AS3__.vec.Vector
disponible a partir de Flash Player 10.
3 Comentarios
Hola,
Tengo una duda que se sale un poco del tema de esta entrada, pero no he encontrado otro mejor dentro de MadeInFlex para colgarla. En una aplicación típica, donde hay mantenimientos y búsquedas en tablas, ¿cómo hacéis para que los valores que son números y lógicos (booleans) puedan ser null? Como sabéis, en ActionScript no hay posibilidad de hacer que un boolean sea null, por lo que siempre se pasará ‘false’ cuando haya un criterio de búsqueda con un boolean.
¿Lo habéis resuelto de alguna manera?
Gracias y un saludo,
Carlos Aza
Hola Carlos, utiliza la lista de correo para dudas puntuales (en la cabecera hay un enlace).
Gracias
Hola,
Gracias, no había caído en la lista de correo.
Un saludo