Bonjour,
J'ai un liste d'objets (de type A) et je veux pour chaque elements lui faire executer la fonction f1, f2 ou f3 (la même pour touts les elements de la liste).
Une manière de faire ça pourrait etre :
+ les fonctions doF2OnAll() et doF3OnAll()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public void doF1OnAll() { //parcourt de la liste et pour chaque element elemnt.f1(); }
Mais c'est quand meme pas super, on fait presque toujours la meme chose et pourtant on est obliger de dupliquer le code.
J' ai pensé aux delegates mais je ne suis pas encore arrivé à faire exactement ce que je veux :
Maintenant le parcours de la liste est codé une unique fois mais je dois passer par une fonction intermédiaire (callF1OnA).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public class A { public void f1(){} public void f2(){} public void f3(){} } public class B { Queue maQueueA;//queue contenant des objets de type A public delegate void myDelegate(A objA ); public void toto() { forAll(callF1OnA); } private void callF1OnA(AobjA) { objA.f1(); } private void forAll(myDelegate aFunc) { Queue copy = new Queue(maQueueA); while (copy.Count > 0) //execution de aFunc sur chaque element de la liste aFunc( ((A) copy.Dequeue())); } }
Bon en résumé, voila ce que je voudrais pouvoir faire :
avoir une fonction
qui prenne en paramtre soit la fonction f1, soit f2, soit f3 et l'exécute sur chaque element A de la liste. Ainsi de la meme maniere, si je voudrai iniialiser tous les elements de la liste je n'aurais qu'à faire forALL(init()), où init est une fonction non static de la classe A.
Code : Sélectionner tout - Visualiser dans une fenêtre à part public void forAll(?)
Est ce que des gens ont des idées ?
PS : je n'ai surement pas été très clair alors n'hésitez pas à poser des questions
Partager