<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola,
Tengo una función que estoy tratando de ejecutar varias veces dentro de un bucle para cada valor único de una variable. Todo funciona bien cuando lo ejecuto fuera del bucle, y el bucle funciona bien cuando lo ejecuto sin la llamada a la función. He intentado envolver varias partes de él en diferentes evaluaciones, y aunque no rompió nada, tampoco ayudó.
La primera iteración funciona bien y el resultado de runBT es correcto. Si ejecuto runBT ("clstr2", 1); y runBT ("clstr2", 2); Fuera del bucle devuelve los resultados correctos cada vez. Si hago un comentario sobre runBT dentro del bucle, muestra i = 1 y luego i = 2, repitiendo ambas veces como se esperaba. Sin un comentario, ejecuta la función correctamente una vez y luego sale, se muestra "bucle finalizado" después de la primera iteración sin ningún error.
clust2vals = array asociativo (dt: clstr2) << obtener claves;
n = N Artículos (clust2vals);
mostrado); // n = 2
show (clust2vals [1]); // = 1
show (clust2vals [2]); // = 2
para (i = 1, i <= n, i ++,
espectáculo (i);
myab = runBT ("clstr2", clust2vals );
mostrar (myab)
);
show ("loop finalizado");
Mi conjetura es que la función runBT está modificando las variables i o n, para tener un alcance global. Puede evitar eso usando variables locales en sus funciones o usando espacios de nombres.