다음 코드가 있습니다. allShaders.forEach
을 사용하는 클리너 버전이 작동하지 않아 임시 버전입니다. 그것은 다른 문제입니다.다트 : 라인을 건너 뛰는 프로그램
static loadAndCompileAll(Function onLoad, Function onFail) {
Function functionQueue =() { onLoad(); };
for (int i=0; i < allShaders.length; ++i){
Shader s = allShaders[i];
Function previous = functionQueue;
functionQueue =() { s.loadAndCompile(() => previous(), onFail); };
}
functionQueue();
}
쉐이더가 로딩되거나 컴파일되지 않는 문제가있었습니다. 디버깅은 for 루프의 마지막 행 (7 행)이 실행되고 있지 않음을 보여줍니다. 루프 실행을 단계별로 수행 할 수 있으며 6 행을 넘어서서 4 행까지 되돌아갑니다. 이유는 알 수 없습니다. 방법은 지금과 같이 사용되는
이:
Shader.loadAndCompileAll(
() { print("Loaded shaders"); },
() { print("Failed to load shaders"); }
);
내가 디버거에서 지역 변수에서 찾고 있다는 통지를했다, onLoad
및 onFail
디버거 창에서 즉, 빈 표시하는 것, 그것은 보여줍니다 이름은 onLoad
이고 값은 ()
입니다. 어쩌면 그것과 관련이있는 것일까 요? 비록 그것이 버그가 아니라면 왜 그것이 그 라인을 건너 뛰게되는지를 상상할 수는 없지만. 저는 언어와 편집자가 처음이므로 익명의 기능인 결과인지는 모르겠습니다.
감사합니다. 이것은 응용 프로그램이 실제로'functionQueue'를 호출한다는 것을 의미합니까, 나는 그것을 관찰 할 수 없습니까? – esel
내가 그것을 시도했을 때 그것을 부르고 있었다. 또한 코드가 내 대답과 같이 형식화되어있을 때 ** 함수 본문 ** 줄에 중단 점을 설정할 때이 함수가 호출되고 있음을 알 수 있습니다. 한 줄에 더 많은 명령문이 있으면 디버거는 첫 번째 명령문에서만 중단됩니다 (이 경우 첫 번째 명령문에서조차도). –
그래, 나는 그 질문을 쓴 후에 그것을 깨달았다. 버그 보고서를 만들었습니다. https://code.google.com/p/dart/issues/detail?id=20762 추가 정보가 필요하다고 생각되면 알려 주시기 바랍니다. – esel