La valutazione dei simboli è troppo ricorsivaCiao,
Sono nuovo di JSL e Sto cercando qualsiasi documentazione (o aiuto diretto) per capire perché ho ricevuto questo errore:
Symbol evaluation is too recursive (25 levels). in access or evaluation of 'gchFailed' , gchFailed/*###*/
Ecco la mia ipotesi su quali informazioni potrebbero essere utili. Mi aiuti per favore. Grazie in anticipo!
Ho due script, un file principale e un file di intestazione. Il mio file principale include () è il file di intestazione, che è un gruppo di definizioni di funzioni. Entrambi gli script utilizzano Nomi predefiniti per qui (1), che potrebbe essere il problema. Ho molte funzioni che usano lo stesso nome di variabile "gchFailed" come variabile locale. L'errore viene generato quando chiamo le seguenti funzioni:
//within header file, function definition
processGCHFile = function({}, {Default Local},
gchFailed = 0;
if(/* failCase */, gchFailed = 1);
{gchFailed, otherReturnValue}; //return values
);
//within main = function({}, {Default Local}, /*main code*/)
gchRet = processGCHFile(gchFile, saveMap); //return values
gchFailed = gchRet[1]; //this works fine
gchDT = gchRet[2];
if(gchFailed, //this throws the error
print("Failed");
);
Ri: la valutazione dei simboli è troppo ricorsivaGrazie, Jim! Vedo la tua preoccupazione e la tua risposta mi è stata d'aiuto
. Stavo cercando di commentare sezioni di codice per ridurre il disordine. Ho escluso quelle sezioni come possibili problemi. Come hai detto tu, assicurandoti che i valori restituiti (evalList) funzionassero!
Ri: la valutazione dei simboli è troppo ricorsivaGrazie, Craige! Ha funzionato come un fascino. Immagino che le espressioni JMP mi stiano ancora facendo incazzare.
Ri: la valutazione dei simboli è troppo ricorsivaNon riesco a spiegarti l'errore ricorsivo, tuttavia, non sono riuscito a vedere come avrebbe funzionato il tuo codice data la mia comprensione di JSL. Il primo problema è che il processGCHFile è stato specificato come non passare nessuna variabile, mentre nel tuo codice stai trasmettendo 2 valori quando chiami la funzione. Pertanto ho commentato i valori passati, poiché sono effettivamente indicati come valori di ritorno. La seconda modifica era semplicemente una modifica di "a == 1" per consentire l'attivazione della funzione IF (). Infine, ho creato in modo specifico la lista di restituzione, quindi ho fatto in modo che il valore fosse l'ultimo valore elaborato, per garantire che fosse il valore restituito.
Spero di capire il problema e questo è utile per te.
Ri: la valutazione dei simboli è troppo ricorsivaPenso che il valore restituito dovrebbe assomigliare a questo:
evalList( {gchFailed, otherReturnValue} ); //return values
quindi la lista contiene i valori delle variabili piuttosto che i nomi delle variabili.