gpt4 book ai didi

javascript - Blockly 中不寻常的 JavaScript for 循环与 xml

转载 作者:行者123 更新时间:2023-11-30 00:15:40 24 4
gpt4 key购买 nike

我正在使用 Google 的 Blockly 开展一个项目,但部分文档难以理解。有人可以帮助我理解以下 for 循环 (xml = allXml[i]) 的结束条件吗?

var allXml = Blockly.Xml.workspaceToDom(workspace);
var allCode = [];
for (var i = 0, xml; xml = allXml[i]; i++) {
var headless = new Blockly.Workspace();
Blockly.Xml.domToWorkspace(headless, xml);
allCode.push(Blockly.JavaScript.workspaceToCode(headless));
headless.dispose();
}

我想当 allXml[i] 未定义时循环将退出,但是您如何像这样遍历 XML 对象?它似乎总是返回 undefined 并完全跳过循环。

谢谢你的帮助

大多数函数的定义可以在 https://code.google.com/p/blockly/source/browse/trunk/core/xml.js?r=1614 找到

我从中提取的文档页面是 https://developers.google.com/blockly/custom-blocks/code-structure?hl=en

最佳答案

我在 github 的仓库中找不到这段代码,所以我猜这是文档中的一个较旧的示例。

但是如果你想看看 Blockly.Xml.workspaceToDom()函数的实现,你会在那里看到非常相似的东西。

  var blocks = workspace.getTopBlocks(true);
for (var i = 0, block; block = blocks[i]; i++) {
var element = Blockly.Xml.blockToDom_(block);
//...
xml.appendChild(element);
}

这里的想法是遍历所有代码分支。顶部 block 没有顶部连接(它开始一个新分支)。 getTopBlocks()返回一个数组 {!Array.<!Blockly.Block>} .

考虑到文档在有关并行执行的部分中显示了它,我认为这与以下事实有关,即您可以有更多未连接的代码分支......并且确切的实现只是随着时间的推移而改变。

关于javascript - Blockly 中不寻常的 JavaScript for 循环与 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34820589/

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