<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo,
Ich habe eine Funktion, die ich versuche, für jeden eindeutigen Wert einer Variablen mehrere Male in einer Schleife auszuführen. Alles funktioniert großartig, wenn ich es außerhalb der Schleife ausführen, und die Schleife läuft einwandfrei, wenn ich sie ohne Funktionsaufruf ausführe. Ich habe versucht, verschiedene Teile davon in verschiedene Evals zu packen, und obwohl es nichts kaputt machte, half es auch nicht.
Die erste Iteration läuft einwandfrei und das Ergebnis von runBT ist korrekt. Wenn ich runBT starte ("clstr2", 1); und runBT ("clstr2", 2); außerhalb der Schleife gibt es jedes Mal die richtigen Ergebnisse zurück. Wenn ich runBT innerhalb der Schleife auskommentiere, zeigt es i = 1 und dann i = 2, wobei beide Male wie erwartet durchlaufen werden. Ohne das Auskommentieren wird die Funktion einmal korrekt ausgeführt und anschließend beendet. Nach der ersten Iteration wird "Schleife beendet" ohne Fehler angezeigt.
clust2vals = assoziatives Array (dt: clstr2) << Schlüssel erhalten;
n = N Artikel (clust2vals);
gezeigt); // n = 2
show (clust2vals [1]); // = 1
show (clust2vals [2]); // = 2
für (i = 1, i <= n, i ++,
show (i);
myab = runBT ("clstr2", clust2vals );
show (myab)
);
show ("Schleife beendet");
Meine Vermutung ist, dass die runBT-Funktion die i- oder n-Variablen ändert, die globalen Geltungsbereich haben sollen. Sie können dies vermeiden, indem Sie in Ihren Funktionen lokale Variablen verwenden oder Namespaces verwenden.