Die Auswertung des Symbols ist zu rekursivHallo,
Ich bin neu bei JSL und Ich suche nach Dokumentation (oder direkter Hilfe), um herauszufinden, warum ich diesen Fehler erhalten habe:
Symbol evaluation is too recursive (25 levels). in access or evaluation of 'gchFailed' , gchFailed/*###*/
Hier ist meine Vermutung, welche Informationen nützlich sein könnten. Bitte hilf mir. Danke im Voraus!
Ich habe zwei Skripte, eine Haupt- und eine Headerdatei. Die Hauptdatei meiner Hauptdatei include () ist eine Reihe von Funktionsdefinitionen. Beide Skripts verwenden Names Default To Here (1), was möglicherweise das Problem ist. Ich habe viele Funktionen, die den gleichen Variablennamen "gchFailed" als lokale Variable verwenden. Der Fehler tritt auf, wenn ich die folgenden Funktionen aufrufe:
//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");
);
Re: Symbolauswertung ist zu rekursivDanke, Jim! Ich sehe Ihre Besorgnis und Ihre Antwort war hilfreich für mich
. Ich habe versucht, Codeabschnitte auszukommentieren, um das Durcheinander zu reduzieren. Ich habe diese Abschnitte als mögliche Problempunkte ausgeschlossen. Wie Sie gesagt haben, sicherstellen, dass die Werte zurückgegeben werden (evalList)!
Re: Symbolauswertung ist zu rekursivDanke, Craige! Lief wie am Schnürchen. Ich denke, JMP-Ausdrücke stürzen mich immer noch auf.
Re: Symbolauswertung ist zu rekursivIch kann Ihnen den rekursiven Fehler nicht erklären, aber ich konnte auch nicht sehen, wie Ihr Code funktionieren würde, wenn ich JSL verstehe. Das erste Problem ist, dass für processGCHFile keine Variablen übergeben wurden, während Sie in Ihrem Code beim Aufrufen der Funktion zwei Werte übergeben. Daher habe ich die übergebenen Werte auskommentiert, da sie tatsächlich als Rückgabewerte angegeben werden. Die zweite Änderung war nur eine einfache Änderung von "a == 1", damit die IF () - Funktion ausgelöst werden kann. Schließlich habe ich die zurückgegebene Liste genauer erstellt und dann sichergestellt, dass der Wert der letzte bearbeitete Wert ist, um sicherzustellen, dass es sich um den zurückgegebenen Wert handelt.
Ich hoffe, ich verstehe das Problem und das ist hilfreich für Sie.
Re: Symbolauswertung ist zu rekursivIch denke, dass der zurückgegebene Wert so aussehen sollte:
evalList( {gchFailed, otherReturnValue} ); //return values
Die Liste enthält also Werte der Variablen und nicht die Namen der Variablen.