首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Dart:程序跳过一行

Dart:程序跳过一行
EN

Stack Overflow用户
提问于 2014-08-31 05:09:00
回答 1查看 683关注 0票数 2

我有下面的代码。使用allShaders.forEach的清洁版不起作用,所以这是暂时的;这是另外一个问题。

代码语言:javascript
运行
复制
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行,我不知道为什么。

目前这种方法是这样使用的:

代码语言:javascript
运行
复制
Shader.loadAndCompileAll(
            () { print("Loaded shaders"); }, 
            () { print("Failed to load shaders"); }
        );

我确实注意到,查看调试器中的局部变量,onLoadonFail似乎显示为空,即在调试器窗口中,它显示名称onLoad和值()。也许这跟这事有关?虽然我无法想象这会导致它跳过一行,除非这是一个bug。我对语言和编辑很陌生,所以我不知道这是否是匿名函数的结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-31 12:02:43

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

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

代码语言:javascript
运行
复制
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上创建一个bug报告吗?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25589130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档