嗨,您好,
我是JSL的新手我正在尋找任何文檔(或直接幫助)搞清楚為什麼我收到此錯誤:
Symbol evaluation is too recursive (25 levels). in access or evaluation of 'gchFailed' , gchFailed/*###*/
以下是我猜測哪些信息可能有用。請幫我。提前致謝!
我有兩個腳本,一個主文件和一個頭文件。我的主文件include()是頭文件,它是一堆函數定義。這兩個腳本都使用Names Default To Here(1),這可能是問題所在。我有許多函數使用相同的變量名“gchFailed”作為局部變量。調用以下函數時會產生錯誤:
//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");
);
謝謝,吉姆!我看到你的擔憂,你的反應對我很有幫助:)。我試圖評論出代碼段以減少混亂。我排除了這些部分可能的問題點。就像你說的那樣,確保返回值(evalList)有效!
謝謝你,Craige!工作就像一個魅力。我猜JMP表達式仍在絆倒我。
我無法向您解釋遞歸錯誤,但是,鑑於我對JSL的理解,我也無法看到您的代碼如何工作。 第一個問題是processGCHFile已被指定為不傳遞任何變量,而在您的代碼中,您在調用函數時傳入2個值。 因此,我註釋掉了傳入的值,因為它們實際上表示為返回值。 第二個變化只是“a == 1”的簡單更改,以允許IF()函數觸發。 最後,我更具體地創建了返回列表,然後確保將其值作為最後處理的值,以確保它是返回值。
我希望我理解這個問題,這對你很有幫助。
我認為返回的值應如下所示:
evalList( {gchFailed, otherReturnValue} ); //return values
所以列表包含變量的值而不是變量的名稱。