Comment obtenir la longueur d'un enum et d'un item dans MQL4/MQL5 ? - page 3

 
Andrey Barinov:

Non, utiliser un tableau au lieu d'un enum est une mauvaise conception.

Exemple : Imaginez que vous avez une valeur de type chaîne de caractères. Et la tâche est de trouver si cette chaîne est égale/contient en elle un des noms d'éléments de l'enum (EnumToString()).

Comment résoudre ce problème ?

Pouvez-vous fournir une situation réelle où une telle chose est nécessaire ? Les Enum sont juste des constantes, pourquoi voulez-vous identifier une chaîne de caractères dans les éléments ?
 
Alain Verleyen:
Pouvez-vous fournir une situation réelle où une telle chose est nécessaire ? Les Enum sont juste des constantes, pourquoi voulez-vous identifier une chaîne de caractères dans les éléments ?
 enum hedge
  {
   AUD=0,//Australian Dollar
   CAD=1,//Canadian Dollar
   CHF=2,//Swiss Franc
   JPY=3,//Japan Yen
   EUR=4,//European Euro
  };

Si vous voulez construire une structure de couverture.

Mais alors je compare simplement tout pour découvrir la valeur réelle.

sinput hedge C1=2;// Hedge Currency 

if(C1=="CAD")
 {
  //Do Something
 }
 
Alain Verleyen:
Pouvez-vous fournir une situation réelle où une telle chose est nécessaire ? Les Enum sont juste des constantes, pourquoi voulez-vous identifier une chaîne de caractères dans les éléments ?
Ma question était juste un exemple. L'auteur du sujet en a décrit un autre. Je comprends qu'ils ne sont pas assez "réels" pour vous et que tout le monde peut utiliser des solutions de contournement, mais cela ne rend pas ces tâches non réelles pour les personnes qui les résolvent.
 
Andrey Barinov:
Ma question n'était qu'un exemple. L'auteur du sujet en a décrit un autre. Je comprends qu'ils ne sont pas assez "réels" pour vous et que chacun peut utiliser des solutions de contournement, mais cela ne rend pas ces tâches non réelles pour les personnes qui les résolvent.
Et nous sommes toujours coincés ici... Une solution ne peut être trouvée que pour un problème réel. Connaissez-vous le vrai problème de l'OP ? Je ne le connais pas.
 
Moi non plus... et je lui ai demandé plusieurs fois maintenant.
 
Alain Verleyen:
Et nous sommes toujours coincés ici... Une solution ne peut être trouvée que pour un vrai problème. Connaissez-vous le vrai problème de l'OP ? Je ne le connais pas.

Je connais BEAUCOUP de situations réelles où cela serait utile. C'est pourquoi j'UTILISE l'approche avec les tableaux, car il n'y a pas d'autre moyen.

Exemple : Vous avez un enum/une liste de quelque chose (disons des options de langage GUI pour votre programme), et vous voulez construire des boutons radio pour cela, pour que l'utilisateur puisse choisir. Vous ne voulez PAS changer le code des boutons plus tard, si vous changez le nombre d'éléments dans votre énumération.

Et vous devez récupérer la valeur de l'enum à partir du nom du bouton pour l'appliquer à votre programme. Vous ne voulez pas écrire de code pour CHAQUE élément de votre énumération, vous voulez une solution simple dans un cycle.

Ceci peut être appliqué non seulement aux langues, mais à beaucoup d'autres choses :

 
Plusieurs façons de faire les mêmes choses.
 
Marco vd Heijden:
Il y a plusieurs façons de faire les mêmes choses.

Eh bien, j'en connais au moins une, car je l'utilise.

Et cela ne rend pas la fonctionnalité dont nous parlons inutile. Vous pouvez enfoncer un clou avec une pierre, mais cela ne signifie pas que vous devez toujours le faire.

 
Andrey Barinov:

Je connais BEAUCOUP de situations réelles où cela serait utile. C'est pourquoi j'UTILISE l'approche avec les tableaux, car il n'y a pas d'autre moyen.

1. Vous avez un enum/une liste de quelque chose (disons des options de langage GUI pour votre programme), et vous voulez construire des boutons radio pour cela, pour que l'utilisateur puisse choisir. Vous NE VOULEZ PAS modifier le code des boutons ultérieurement, si vous changez le nombre d'éléments de votre énumération.

Et vous devez récupérer la valeur de l'enum à partir du nom du bouton pour appliquer votre programme. Vous ne voulez pas écrire de code pour CHAQUE élément de votre énumération, vous voulez une solution simple dans un cycle.

Ceci peut être appliqué non seulement aux langages, mais à beaucoup d'autres choses :

Je connais Andrey. Votre exemple nécessite une solution dynamique, donc vous n'utilisez pas enum mais array. Si vous voulez utiliser un enum (statique) pour quelque chose qui est dynamique (votre exemple), c'est une mauvaise conception. Il me semble que nous disons la même chose.

Nous ne pouvons pas aider davantage le PO car il ne dit pas pourquoi il a besoin de boucler.

 
Andrey Barinov:

Eh bien, j'en connais au moins une, car je l'utilise.

Et cela ne rend pas la fonctionnalité dont nous parlons inutile. Vous pouvez enfoncer un clou avec une pierre, mais cela ne signifie pas que vous devez toujours le faire.

Même le langage Java a existé sans AUCUN type d'énumération pendant très longtemps, et comme Java utilise rarement des tableaux purs, il y avait beaucoup d'autres façons OO d'itérer une liste de valeurs. Je n'appellerais pas cela une pierre et un clou.

Raison: