심볼 평가가 너무 재귀적임안녕,
나는 JSL을 처음 접했고 왜 내가이 오류가 있는지 알아내는 어떤 문서 (또는 직접 도움)를 찾고있다 :
Symbol evaluation is too recursive (25 levels). in access or evaluation of 'gchFailed' , gchFailed/*###*/
여기에 어떤 정보가 유용 할 지 추측합니다. 제발 도와주세요. 미리 감사드립니다.
두 개의 스크립트, 기본 및 헤더 파일이 있습니다. 내 주요 파일 include ()는 함수 정의 묶음 인 헤더 파일이다. 두 스크립트 모두 이름 기본값 인 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");
);
Re : 심볼 평가가 너무 재귀 적입니다.고마워, 짐! 나는 당신의 우려를보고 당신의 반응은 나에게 도움이되었다. 난 혼란을 줄이기 위해 코드 섹션을 주석 처리하려고했다. 나는 그 부분들을 가능한 문제 점으로 배제했다. 당신이 말했듯이, 값이 리턴되었는지 확인하는 것 (evalList)이 효과가있다!
Re : 심볼 평가가 너무 재귀 적입니다.고마워, 크레이지! 매력처럼 일했습니다. 나는 JMP 표현이 여전히 나를 속이고 있다고 생각한다.
Re : 심볼 평가가 너무 재귀 적입니다.재귀 오류를 설명 할 수는 없지만 JSL에 대한 나의 이해를 바탕으로 코드가 어떻게 작동 하는지를 볼 수 없었습니다. 첫 번째 문제는 processGCHFile이 변수를 전달하지 않는 것으로 지정되었지만 코드에서 함수를 호출 할 때 2 개의 값을 전달한다는 것입니다. 따라서 실제로 전달 값으로 표시되기 때문에 전달되는 값을 주석 처리했습니다. 두 번째 변경 사항은 IF () 함수를 트리거 할 수 있도록 "a == 1"의 간단한 변경이었습니다. 마지막으로 반환 목록을 작성한 다음 반환 된 값인지 확인하기 위해 마지막 처리 된 값으로 지정해야합니다.
나는이 문제를 이해하고 이것이 당신에게 도움이되기를 바랍니다.
Re : 심볼 평가가 너무 재귀 적입니다.반환 값은 다음과 같아야합니다.
evalList( {gchFailed, otherReturnValue} ); //return values
목록에는 변수의 이름이 아니라 변수의 값이 들어 있습니다.