¿Cómo obtener la longitud del enum y del ítem en MQL4/MQL5? - página 3

 
Andrey Barinov:

No, usar un array en lugar de un enum es un mal diseño.

Ejemplo: Imagina que tienes un valor de cadena. Y la tarea es averiguar si esta cadena es igual/contiene en ella uno de los nombres de los elementos del enum (EnumToString()).

¿Cómo resolverías esto?

¿Puedes proporcionar una situación real en la que se necesite algo así? Los enum son sólo constantes, ¿por qué quieres identificar una cadena dentro de los elementos?
 
Alain Verleyen:
¿Puede proporcionar una situación real en la que se necesite tal cosa? Enum son sólo constantes, ¿por qué quieres identificar una cadena dentro de los elementos?
 enum hedge
  {
   AUD=0,//Australian Dollar
   CAD=1,//Canadian Dollar
   CHF=2,//Swiss Franc
   JPY=3,//Japan Yen
   EUR=4,//European Euro
  };

Si quieres construir una estructura de cobertura.

Pero entonces simplemente comparo todo para descubrir el valor real.

sinput hedge C1=2;// Hedge Currency 

if(C1=="CAD")
 {
  //Do Something
 }
 
Alain Verleyen:
¿Puede proporcionar una situación real en la que se necesite algo así? Los Enum son sólo constantes, ¿por qué quieres identificar una cadena dentro de los elementos?
Mi pregunta era sólo un ejemplo. El tema que inició el tema describió otro. Entiendo que no son lo suficientemente "reales" para usted y todo el mundo puede utilizar soluciones, pero esto no hace que estas tareas no sean reales para la gente que las está resolviendo.
 
Andrey Barinov:
Mi pregunta era sólo un ejemplo. El iniciador del tema describió otro. Entiendo que no son lo suficientemente "real" para usted y todo el mundo puede utilizar soluciones, pero esto no hace que estas tareas no son reales para la gente que está resolviendo.
Y todavía estamos atascados aquí... Sólo se puede encontrar una solución para un problema real. ¿Conoces el problema real del OP? No lo sé.
 
Yo tampoco... y se lo he pedido varias veces.
 
Alain Verleyen:
Y todavía estamos atascados aquí... Sólo se puede encontrar una solución para un problema real. ¿Sabes cuál es el verdadero problema del PO? No lo sé.

Conozco MUCHAS situaciones reales en las que esto sería útil. Es por esto que UTILIZO el enfoque con arrays, porque no hay otra manera.

Ejemplo: Usted tiene un enum/lista de algo (digamos opciones de lenguaje GUI para su programa), y quiere construir botones de radio para ello, para que el usuario elija. Usted NO QUIERE cambiar el código de los botones más tarde, si cambia el número de elementos en su enum.

Y necesitas recuperar ese valor del enum desde el nombre del botón para aplicarlo a tu programa. Usted NO QUIERE escribir código para CADA elemento de su enum, usted quiere una solución simple dentro de un ciclo

Esto puede aplicarse no sólo a los lenguajes, sino a MUCHAS otras cosas:

 
Muchas maneras de hacer las mismas cosas.
 
Marco vd Heijden:
Hay muchas maneras de hacer las mismas cosas.

Bueno, yo conozco al menos una, porque la estoy usando.

Y eso no hace que la función de la que hablamos sea inútil. Se puede clavar un clavo con una piedra, pero eso no significa que haya que hacerlo siempre.

 
Andrey Barinov:

Conozco MUCHAS situaciones reales en las que esto sería útil. Por eso UTILIZO el enfoque con arrays, porque no hay otra manera.

1. Usted tiene un enum/lista de algo (digamos opciones de lenguaje GUI para su programa), y quiere construir botones de radio para ello, para que el usuario elija. Usted NO QUIERE cambiar el código de los botones más tarde, si cambia el número de elementos en su enum.

Y necesitas recuperar ese valor del enum desde el nombre del botón para aplicar tu programa. Usted NO QUIERE escribir código para CADA elemento de su enum, usted quiere una solución simple dentro de un ciclo

Esto se puede aplicar no sólo a los lenguajes, sino a MUCHAS otras cosas:

Lo sé Andrey. Tu ejemplo necesita una solución dinámica, así que no usas enum sino array. Si quieres usar enum (estático) para algo que es dinámico (tu ejemplo), es un mal diseño. Me parece que estamos diciendo lo mismo.

No podemos ayudar más al OP ya que no dice el motivo por el que necesita el bucle.

 
Andrey Barinov:

Bueno, yo conozco al menos una, porque la estoy usando.

Y eso no hace que la función de la que hablamos sea inútil. Puedes clavar un clavo con una piedra, pero eso no significa que debas hacerlo siempre.

Incluso el lenguaje Java existió sin ningún tipo de enum durante mucho tiempo, y como Java utiliza arrays puros raramente, había muchas otras formas OO de cómo iterar una lista de valores. Yo no lo llamaría una piedra y un clavo.