Déclarer les variables derrière la boucle ou à l'intérieur de la boucle ? - page 8

 
Alexey Viktorov:
Ce n'est pas possible, ce n'est pas bien du tout. Un seul exemple : Dans la boucle, vous regardez les positions ouvertes. Vous obtenez un ticket de position, vous l'utilisez pour obtenir d'autres propriétés de la position. Il y a deux variantes, soit dans chaque fonction d'obtention de la propriété de position insérer PositionGetTicket(i) ou l'écrire dans une variable une fois et l'utiliser. Mais après la sortie de la boucle, personne n'a besoin de ce ticket... Pourquoi déclarer cette variable dans le corps de la fonction OnTick() ou plus intéressant encore au niveau global ?

Peut-être que je ne me suis pas exprimé correctement. ....

Bien sûr, ils ne sont pas nécessaires dans OnTick(). Je ne sais pas si c'est bien de mettre les boucles (et les variables qui y sont nécessaires) dans les fonctions ?

P.S. En général, tout proger devrait savoir où une variable est nécessaire et déterminer sa zone de visibilité de manière indépendante.......
 

D'une manière générale, string plus et mcl sont différents. En µl, c'est le type fondamental, et il y a clairement plus de possibilités d'optimisation. Par conséquent, il peut être erroné de faire une telle comparaison par axe. Bien que je sois en faveur de l'uniformité avec les plus - il ne devrait pas être là, donc il ne devrait pas être en µl.

 
Vict:

D'une manière générale, string plus et mcl sont différents. En µl, après tout, c'est un type fondamental, et il y a clairement plus de place pour l'optimisation. Par conséquent, il n'est peut-être pas correct de faire une comparaison aussi maladroite. Bien que je sois en faveur de l'uniformité avec les plus - il ne devrait pas être là, donc il ne devrait pas être en µl.

Parlez-vous le biélorusse ? Non ? Pourquoi ? La langue biélorusse est nettement plus proche du vieux slavon. Allons-nous parler russe plutôt que vieux slave ? Apparemment, il est nécessaire d'utiliser le biélorusse...

Je vais encore m'énerver... Mais, une fois encore, le SI et le MQL sont des langues différentes ! Malgré le fait que l'un était basé sur l'autre.....

 
Сергей Таболин:

Peut-être que je ne me suis pas exprimé correctement. ....

Bien sûr, ils ne sont pas nécessaires dans OnTick(). Je ne sais pas, peut-être que c'est bien de mettre les boucles (et les variables qui y sont nécessaires) dans les fonctions ?

P.S. Et en général, tout proger lui-même devrait savoir où se trouve une variable dont il a besoin et déterminer indépendamment sa zone de visibilité.......

Voici les mots d'or.

Et placer une boucle dans une fonction externe, si elle n'est utilisée qu'une seule fois dans le code, dépend de ce que la religion autorise. De nombreuses personnes s'en tiennent désormais à la POO et placent chaque petite chose dans des classes ou des macros. Une telle mode est devenue populaire.

 
Alexey Viktorov:

Et mettre la boucle dans une fonction externe, si elle n'est utilisée qu'une seule fois dans le code, est une question de religion.

Pour ajouter un mot à votre vocabulaire - cette religion s'appelle SOLIDE

 

Pour ceux qui croient en un compilateur intelligent. Une partie du code du script est présentée ci-dessous.

Le code source est dans le fichier joint.

string predictor_names[]={"Time_RSI_ZZ_00","rPeresek_Down","Time_ZZ_02","Speed_1_ZZ_Proc_04"...}

struct sRule
  {
   int               predictor_id;
   bool              more_eq; 
   double            value; 
  };
//Лист дерева(набор правил)
struct sLeaf_r
  {
   int               rules_count;              //Сколько правил
   sRule             rules[32];  //Все правила листа
   double            result_leaf;//Результат листа
  };
//Количество всех листьев 164912
sLeaf_r           leaf_rs[]=
  {
     {3,{{0,0,21.5},{1,1,0.5},{2,0,15.5}},0.0},
     {5,{{0,0,21.5},{1,1,0.5},{2,1,15.5},{3,1,6.5},{4,0,-4.5}},-1.0},
......
......
//Очень много данных
  }

void OnStart()
  {

  }

Les structures sont complètement statiques, le tableauleaf_rs peut être complètement jeté.OnStart() est vide. En conséquence, la taille du fichier compilé est de près de 2 Moctets.

Dossiers :
test_3.zip  418 kb
 
Igor Makanu:

Pour ajouter des mots à votre vocabulaire - cette religion s'appelle SOLIDE

Igor, ton père est beaucoup plus âgé que moi ? Je pense que pas plus de 5 ans. Est-il encore capable d'enrichir son vocabulaire ? Ou êtes-vous trop jeune ? Ne cherchez pas de sens caché dans mes paroles.
 
Alexey Viktorov:

........

Et mettre la boucle dans une fonction externe, si elle n'est utilisée qu'une seule fois dans le code, est une question de religion. De nos jours, beaucoup de gens sont adeptes de la POO et mettent tout dans des classes ou des macros. C'est la mode maintenant.

J'ai déjà posé cette question une fois, mais je n'ai jamais obtenu de réponse. Exactement pour ces cas, afin de ne pas utiliser "leur" religion, existe-t-il une manière standard de détruire une variable ?

Pourtant, personnellement, je n'aime pas déclarer des variables dans une boucle. Je préfère les déclarer avant, mais comment les détruire ensuite ? ....... C'est pourquoi la fonction. Après l'avoir quitté, les variables internes sont détruites. ( ???)

Je ne peux pas dire quoi que ce soit sur la POO. Je ne comprends pas pourquoi c'est nécessaire ))))))) Obsolète, probablement ))))))))))

 
Сергей Таболин:

J'ai déjà demandé une fois, mais je n'ai jamais eu de réponse. Exactement pour de tels cas, afin de ne pas utiliser "leur" religion, existe-t-il une manière standard de détruire une variable ?

Personnellement, je n'aime pas déclarer des variables dans une boucle, cependant. Je préfère les déclarer avant, mais comment les détruire ensuite ? ....... C'est pourquoi la fonction. Après l'avoir quitté, les variables internes sont détruites. ( ???)

Je ne peux pas dire quoi que ce soit sur la POO. Je ne comprends pas pourquoi c'est nécessaire ))))))) Obsolète, probablement ))))))))))

Je ne comprends pas, c'est ça ?

if (true) {
        Type var;
        for (...) {
                var.use();
        }
}

Je doute qu'ils ne le savaient pas.

 
Alexey Viktorov:
Igor, ton père n'est pas beaucoup plus âgé que moi ?

1953-2008 père

1953-2019 beau-père

Raison: