gpt4 book ai didi

dart - Dart:程序跳过一行

转载 作者:行者123 更新时间:2023-12-03 02:53:51 25 4
gpt4 key购买 nike

我有以下代码。使用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"); }
);

我确实注意到,在调试器中查看本地变量时, onLoadonFail似乎显示为空,即在调试器窗口中,它显示名称 onLoad和值 ()。也许与它有关?尽管我无法想象为什么会导致它跳过一行,除非这是一个错误。我是该语言和编辑器的新手,所以我不知道这是否是匿名函数的结果。

最佳答案

调试器似乎跳过了这一行,但是当调用functionQueue()而不是loadAndCompile()时,调用onLoad()。这表示分配语句已执行。
调试器(我在WebStorm上尝试过)似乎存在一个问题,即功能分配未被识别为暂停点。调试器也没有停止在static loadAndCompileAll的第一行中。

当您以不同的方式设置代码格式时,您至少可以设置断点,在该断点处,调试器在实际调用该函数时会暂停。

static loadAndCompileAll(Function onLoad, Function onFail) {
Function functionQueue = () {
onLoad(); // set breakpoint here
};

for (int i=0; i < allShaders.length; ++i){
Shader s = allShaders[i];
Function previous = functionQueue;
functionQueue = () {
s.loadAndCompile(() => previous(), onFail); // set breakpoint here
};
}

functionQueue();
}

您能否在 http://dartbug.com/new上针对此调试器问题创建错误报告?

关于dart - Dart:程序跳过一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25589130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com