<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao,
Ho una funzione che sto cercando di eseguire più volte all'interno di un ciclo per ogni valore univoco di una variabile. Tutto funziona alla grande quando lo eseguo al di fuori del ciclo e il ciclo funziona correttamente quando lo eseguo senza la chiamata di funzione. Ho provato a confezionarne varie parti in diversi Eval, e anche se non ha infranto nulla, non è stato d'aiuto.
La prima iterazione funziona correttamente e il risultato di runBT è corretto. Se eseguo runBT ("clstr2", 1); e runBT ("clstr2", 2); al di fuori del ciclo restituisce i risultati corretti ogni volta. Se commento out runBT all'interno del ciclo mostra i = 1 e quindi i = 2, iterando attraverso entrambe le volte come previsto. Senza commentare, esegue una volta la funzione correttamente e quindi esce, "loop ended" viene mostrato dopo la prima iterazione senza errori.
clust2vals = array associativo (dt: clstr2) << ottieni le chiavi;
n = N Items (clust2vals);
mostra (n); // n = 2
mostra (clust2vals [1]); // = 1
mostra (clust2vals [2]); // = 2
per (i = 1, i <= n, i ++,
mostra (i);
myab = runBT ("clstr2", clust2vals );
mostra (Myab)
);
mostra ("loop ended");
La mia ipotesi è che la funzione runBT stia modificando le variabili i o n, che hanno uno scope globale. Puoi evitarlo usando le variabili locali nelle tue funzioni o usando i namespace.