嗨,您好,
我是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
所以列表包含变量的值而不是变量的名称。