Partage
  • Partager sur Facebook
  • Partager sur Twitter

boucle dans une adresse de fonction ?

    28 décembre 2009 à 12:38:47

    Bonjour :) ,

    J aimerais trouver un syteme pour alléger mon programme.

    voila j ai dison 100 fonctions et j aimerais faire un truc du genre:

    deplacer_Objet_[i](); for (int i = 0; i < 100; i++){ if (t2[1]=="n" && t3[i]=='o' && nj==1){ nj=0; pro(n,v,i,c,ty); return; } }

    deplacer_Objet_.[i](); faire une boucle dans une adresse ca me ferais une ligne a la place de 100.
    Donc je voudrais éviter d écrire la meme ligne avec deplacer_Objet_1(); , puis deplacer_Objet_2(); jusqu a 100.
    Comment faire ? o_O
    • Partager sur Facebook
    • Partager sur Twitter
      28 décembre 2009 à 13:18:29

      Si les deux méthodes sont dans la méme classe tu peux créer une méthode comme celle-ci:
      void deplacerObjet(int i){
      case 1:deplacerObjet1();
             break;
      case 2:deplacerObjet2();
             break;
      //...
      }
      

      puis tu fais ta boucle sur le paramètre i
      </span>
      • Partager sur Facebook
      • Partager sur Twitter
        28 décembre 2009 à 14:02:31

        C'est un peu ridicule Einstein, il suffirait de créer une méthode qui contient toutes les fonctions dans l'ordre et ça épargnerait le switch case.

        De plus son but est d'éviter d'utiliser des lignes inutiles, pas uniquement d'utiliser un for.

        Et bien à ma connaissance ce n'est pas possible, je n'ai vu ça qu'une seule fois en javascript et c'est assez moche à faire. Je vais jeter un oeil si je trouve quelques chose mais je ne pense vraiment pas que ça soit possible en java.
        • Partager sur Facebook
        • Partager sur Twitter
          28 décembre 2009 à 14:08:32

          Citation : Pyros

          C'est un peu ridicule Einstein, il suffirait de créer une méthode qui contient toutes les fonctions dans l'ordre

          Oui une seule méthode avec 2535 lignes c'est le paradis :-°
          Mais bon j'avoue que ce n'est pas très propre..

          Citation : Pyros

          mais je ne pense vraiment pas que ça soit possible en java.


          ça sera possible avec java 7 ;)</span>
          • Partager sur Facebook
          • Partager sur Twitter
            28 décembre 2009 à 14:21:43

            Le problème des langages compilés c'est que une fois sortis du four, les méthodes sont complètement chamboulées. Pour ton programme en byte code, deplaceObject, ça veut rien dire. On pourrait imaginer une structure de boucle différente définie pour programmeur qui simplifie juste l'écriture du code mais qui la déroule déjà lors de la compilation, un peu comme en c, mais d'après mois c'est impossible en java.

            Dans l'idée du switch case (que je désapprouve, c'est encore plus lourd que placer toutes les lignes dans une méthode;) ) on pourrait imaginer l'instanciation d'un tableau qui retient l'adresse en mémoire d'une méthode (si je ne me trompe as, c'est possible) et qui exécute chaque méthode du tableau dans un while. L'intérêt sera dans ce cas de pouvoir par exemple exécuter une méthode sur deux, ça donne les même possibilités que le switch case. Mais ça reste très lourd en mémoire et c'est déconseillé.


            Mais pour faire un programme rapide et pas trop lourd en mémoire, le mieux reste de créer une méthode contenant toutes les méthodes à la suite, si de toute façon elles doivent toutes êtres exécutées dans l'ordre.

            De plus avec les compilateurs actuels (j'utilise eclipse) tu peux cliquer sur le petit moins dans la colonne, à gauche de la fonction, et elle se replie, ce qui facilite la lisibilité.

            ps: si c'est juste par flem décrire, crée un petit programme qui va t'imprimer à l'écran toutes les fonctions à la suite , et après, c/c ;)
            • Partager sur Facebook
            • Partager sur Twitter
              28 décembre 2009 à 14:28:15

              Si je ne m'abuse, avec l'introspection tu pourras obtenir ce que tu souhaites. De cette manière tu pourras en quelques lignes appeler tes 100 méthodes à la suite. => http://gfx.developpez.com/tutoriel/java/reflection/
              • Partager sur Facebook
              • Partager sur Twitter

              boucle dans une adresse de fonction ?

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown