<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕하세요,
변수의 고유 한 값마다 루프 내에서 여러 번 실행하려고하는 함수가 있습니다. 모든 것은 루프 외부에서 실행할 때 훌륭하게 작동하며, 함수 호출없이 루프를 실행하면 정상적으로 실행됩니다. 그것의 다양한 부분을 다른 Eval의 것들로 감싸는 것을 시도해 보았습니다. 그리고 아무 것도 깨지 않았지만 그것은 도움이되지 않았습니다.
첫 번째 반복은 잘 실행되고 runBT의 결과는 정확합니다. runBT를 실행하면 ( "clstr2", 1); 및 runBT ( "clstr2", 2); 루프 외부에서 매번 올바른 결과를 반환합니다. 루프 내에서 runBT를 주석 처리하면 i = 1을 표시 한 다음 i = 2로 표시하여 예상대로 두 번 반복합니다. 주석이 없으면 함수가 올바르게 실행 된 다음 종료되고 "루프 종료 됨"이 오류없이 첫 번째 반복 후에 표시됩니다.
clust2vals = 연관 배열 (dt : clstr2) << 키 가져 오기;
n = N 개 항목 (clust2vals);
쇼 (n); // n = 2
쇼 (clust2vals [1]); // = 1
쇼 (clust2vals [2]); // = 2
for (i = 1, i <= n, i ++,
쇼 (i);
myab = runBT ( "clstr2", clust2vals );
쇼 (myab)
);
쇼 ( "루프 종료 됨");
내 생각 엔 runBT 함수는 전역 범위가있는 i 또는 n 변수를 수정하고있는 것입니다. 함수에서 지역 변수를 사용하거나 네임 스페이스를 사용하여이를 피할 수 있습니다.