Este bug de AS3 hizo que perdiera el día. Hoy lo comparto para que no les suceda lo mismo
Código :
hacerAlgo(); function hacerAlgo():void { switch(1) { case 1: var xml:XML = <root ver="0.1"> <contenido id="2"> Prueba </contenido> </root>; var resultado:XMLList = xml..contenido.(@id == 2); trace( resultado ) break; } }
El trace de este código devuelve "null", cuando debería devolver "Prueba".
Este es el mínimo de cosas que tiene que haber para que ocurra:
- Una función
- Un switch
- Una variable XMLList que guarde una consulta de XML de comparación
Soluciones:
- Declarar la variable resultado al principio de la función
- Usar un If o Else en vez de un switch
- Ejecutar el contenido del case en una función aparte
Espero que les sirva
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Otaku RzO el 13 de Septiembre de 2011
Si agregó llaves para el CASE funciona bien.
Código :
Yo uso llaves en los case porque me permite colapsarlos en mi Editor de código (FlashDevelop) .Por Artick el 13 de Septiembre de 2011
momento... eso quiere decir que seguiría ejecutando hasta que encontrase un 'break'
sinceramente, cuando hago los switch siempre he puesto llaves para evitar cualquier error de programación.
nota: AS3 no es lo mio.
Por sulky el 14 de Septiembre de 2011
Por exekiel21 el 15 de Enero de 2012
Código :
eXe