运行和控制台
运行
单击工具栏上的 Run(运行),或按 F5 或 Ctrl+E。运行期间,该按钮显示为 Stop,单击 Stop 或按 Shift+F5 即可结束运行。运行属于它的文档:运行期间切换标签页不会中断运行,关闭文档则会结束运行。
运行的内容取决于图:
- Flows 图运行其激活的节点及其依赖的所有内容,不运行其他节点。
- Function 运行每个节点,从 Input 到 Output。
- 在 Interpreted 模式下,如果当前显示的是 Routine、Events 图或状态机,Run 运行当前显示的图;其他情况下,运行文档的入口图,即大纲中标记为 entry 的图。
- 在 Compiled 模式下,Run 始终运行入口图。
运行结束时,状态栏会显示运行情况,Properties 面板切换到 Run 视图:显示 Finished 或 Failed、耗时和所用模式、导致运行停止的问题,以及 Run log(即运行打印的内容)。运行从不更改文档;下一次运行从画布上的内容开始。
要在解释运行后以全尺寸查看某个节点的结果,请选中该节点并按 Alt+Enter,或右键单击它并选择 Open preview in window:结果会在单独的窗口中打开。运行之前没有可显示的内容,状态栏会显示 Run the graph first; there is nothing to preview yet.
两种运行模式
工具栏上的切换开关决定以两种方式中的哪一种运行文档。每个标签页都有自己的设置,文档打开时为 Interpreted;状态栏会在消息旁显示当前模式。将鼠标悬停在开关的任意一半上,可以看到用几行文字概括的区别。
| Interpreted | Compiled | |
|---|---|---|
| 运行方式 | 逐个节点遍历图 | 先将文档构建为程序,再运行该程序 |
| 速度 | 立即开始;处理繁重任务时较慢 | 构建需要片刻,之后运行快得多 |
| Run 启动的内容 | 当前显示的 Routine、Events 图或状态机,否则为入口图 | 始终为入口图 |
| 画布上 | 每个已运行的节点都显示 done,有内容可显示时还会显示其结果的预览;失败的节点以红色轮廓标出 | 无:编译的程序只报告它打印和返回的内容 |
| 状态栏 | 4 nodes in 99 ms | Ran compiled in 361 ms |
| 控制台 | 每一行都注明打印它的节点 | 每一行都注明所属的运行 |
| 调试 | 断点、暂停和单步执行 | 相同,前提是运行中有可以停下的断点;请参阅调试 |
| 停止 | 在下一个节点或语句之前停止 | 如果运行中有可以停下的断点,则在下一条语句之前停止;否则程序无法中断,其结果在返回时被丢弃 |
构建过程中使用解释模式,每个节点都会显示它产生的结果;当运行负担较重时(长循环、大图像、大表格),或者需要检查程序在编辑器之外运行时的表现时,切换到编译模式。在编辑器之外,程序默认以编译方式运行(请参阅导出程序)。文档、其数据成员及初始值在两种模式下的行为相同。

激活的节点
在 Flows 图上,运行从标记为 Active 的节点开始,只运行它们需要的内容。选中一个节点并按 Space,可将其标记为激活或取消激活,也可以使用其 Properties 中的 Active 开关。画布上方的一行会统计它们(例如 1 active · 4 will run),运行不会涉及的节点会变暗。没有任何激活节点时,无论哪种模式,运行都会显示 Nothing ran (no active nodes)。
缓存的结果
较慢的节点(例如加载大文件或进行渲染的节点)可以在多次解释运行之间保留其结果。选中该节点并按 Shift+Space,或在其 Properties 中打开 Cache result:之后的运行会重用它产生的结果,跳过它及其之前的所有节点,直到它所依赖的内容发生变化。状态栏会统计重用的内容,例如 1 node in 5 ms · 10 reused。在解释运行之后立即打开此开关,会立即保留该次运行的结果。如果要特意重新计算(例如它读取的文件已更改),可将其关闭后再打开。
控制台
运行打印的内容(Print Line、Print 以及其他任何写出内容的节点)会输出到画布下方的控制台停靠栏。运行只是静默打印时,停靠栏保持关闭:状态栏会统计行数,计数旁的圆点表示有未读内容,画布上方还会出现一条简短提示。当运行写入标准错误、运行失败或等待你输入内容时,停靠栏会自动打开。
按 Ctrl+`,或单击状态栏中的行数,即可打开或关闭控制台。拖动其上边缘可以调整高度。
Console 标签页顶部从左到右依次为:
| 控件 | 作用 |
|---|---|
| Follow | 使最新的一行始终可见。 |
| 类别列表 | 显示 All(所有行),或只显示运行的 Output、Standard error 或 Run errors(导致运行停止的失败)。 |
| Filter lines | 只显示包含所输入内容的行。按 Esc 清空。 |
| 复制 | 复制当前显示的行,包括失败的完整详细信息。 |
| 清除 | 清空控制台,直到下一次运行。 |
每一行都带有打印时间和打印它的对象,前后各有一行,注明运行所属的文档和模式,以及运行结束的时间。控制台属于运行,而不是标签页:当另一个文档位于前台时,某个文档的运行暂停或结束,仍会显示其输出行。这些行可以选中,并用 Ctrl+C 复制。状态栏本身的消息也可以复制:单击它即可。
运行请求输入时
Read Line 之类的节点会等待一行文本。停靠栏会打开控制台,并在最后一行下方显示一个输入行,状态栏显示 Waiting for input。输入内容并按 Enter 发送。Shift+Enter 开始第二行,每一行依次响应一次读取。Ctrl+D 结束输入,Shift+F5 停止运行。