<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut,
J'ai une fonction que j'essaie d'exécuter plusieurs fois dans une boucle pour chaque valeur unique d'une variable. Tout fonctionne bien lorsque je l'exécute en dehors de la boucle, et la boucle fonctionne correctement lorsque je l'exécute sans l'appel de la fonction. J'ai essayé d'en emballer différentes parties dans différentes Eval, et bien que cela ne casse rien, cela n'a pas aidé non plus.
La première itération fonctionne correctement et le résultat de runBT est correct. Si je lance runBT ("clstr2", 1); et runBT ("clstr2", 2); en dehors de la boucle, il renvoie les résultats corrects à chaque fois. Si je commente runBT à l'intérieur de la boucle, il indique i = 1, puis i = 2, en itérant les deux fois comme prévu. Sans commentaire, la fonction est exécutée correctement une fois, puis se termine, "boucle terminée" s'affiche après la première itération sans erreur.
clust2vals = tableau associatif (dt: clstr2) << get clés;
n = N éléments (clust2vals);
show (n); // n = 2
show (clust2vals [1]); // = 1
show (clust2vals [2]); // = 2
pour (i = 1, i <= n, i ++,
montrer (i);
myab = runBT ("clstr2", clust2vals )
show (myab)
)
show ("boucle terminée");
Je suppose que la fonction runBT modifie les variables i ou n, qui doivent avoir une portée globale. Vous pouvez éviter cela en utilisant des variables locales dans vos fonctions ou en utilisant des espaces de noms.