ActionScript - Sentencia switch con muchos valores

 
Vista:

Sentencia switch con muchos valores

Publicado por Santiago (1 intervención) el 03/11/2010 17:43:55
Buenas tardes,

veréis, se me presenta un caso curioso que estoy seguro que es una tontería, pero que me está dando dolor de cabeza: tengo un elemento comboBox en código AS3 con 200 valores. El tema es que quiero comprobar el valor seleccionado, y comprobar si ese valor pertenece a un grupo de valores u otro. Para entendernos:

switch (int(combo.selectedItem.data)){
case 1:
case 7:
case 12:
this.gotoAndStop(2);
break;
case 4:
case 5:
case 6:
this.gotoAndStop(3);
break;
}

el problema es que tengo que agrupar 200 posibles resultados en 15 grupos (o case), y no encuentro forma de minimizar el código sin tener un motón de líneas. Había pensado en hacerlo con la sentencia if, pero me encuentro también con una gran cantidad de código.

¿Hay alguna manera de reducir al máximo el código? Supongo que estaré desentrenado y por eso no me doy cuenta, pero no acabo de encontrar la forma.

Un saludo y gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Simplificar código de agrupación en un elemento ComboBox

Publicado por Alejandro (369 intervenciones) el 27/06/2023 18:39:23
Entiendo tu preocupación por la extensión del código al agrupar 200 posibles resultados en 15 grupos. Hay varias formas de simplificar y minimizar el código para lograr el resultado deseado. A continuación, te proporcionaré algunas sugerencias:

1. Usar arrays para almacenar los grupos: Puedes crear arrays que contengan los valores de cada grupo y luego verificar si el valor seleccionado se encuentra en alguno de los arrays. Aquí tienes un ejemplo:

1
2
3
4
5
6
7
8
9
10
var grupo1:Array = [1, 7, 12];
var grupo2:Array = [4, 5, 6];
 
var valorSeleccionado:int = int(combo.selectedItem.data);
 
if (grupo1.indexOf(valorSeleccionado) !== -1) {
  this.gotoAndStop(2);
} else if (grupo2.indexOf(valorSeleccionado) !== -1) {
  this.gotoAndStop(3);
}

De esta manera, agrupas los valores relacionados en arrays y utilizas el método `indexOf()` para verificar si el valor seleccionado está presente en alguno de los grupos.

2. Utilizar estructuras de datos más eficientes: En lugar de utilizar una estructura switch o una serie de if-else, considera utilizar estructuras de datos más eficientes, como diccionarios o tablas de búsqueda, que te permitan asociar directamente los valores seleccionados con el resultado correspondiente. Esto puede reducir considerablemente el número de líneas de código. Aquí tienes un ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var resultados:Object = {
  1: 2,
  7: 2,
  12: 2,
  4: 3,
  5: 3,
  6: 3
};
 
var valorSeleccionado:int = int(combo.selectedItem.data);
 
if (resultados.hasOwnProperty(valorSeleccionado)) {
  this.gotoAndStop(resultados[valorSeleccionado]);
}

En este caso, el objeto `resultados` actúa como una tabla de búsqueda donde asocias directamente los valores seleccionados con los resultados correspondientes.

Estas son solo algunas sugerencias para simplificar y reducir el código al agrupar los valores de un ComboBox. Puedes adaptar estas ideas a tu caso particular y ajustarlas según tus necesidades.

Recuerda que la claridad y legibilidad del código también son importantes, así que asegúrate de que el código resultante sea comprensible y mantenible.

Espero que estas sugerencias te sean útiles. ¡Buena suerte con tu proyecto en ActionScript 3!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar