跳转到内容

控制流与 Section 拓扑

本页遵循 Ktory 设计原则,实现边界与长期目标以该原则及其权威文档为准。

根节按源码顺序执行,跳过命名节的正文。采用规范缩进:命名节正文比 === Label === 更深;退回声明层级后恢复根节。

: 故事开始。
=> Greeting
: 继续主线。
-> end
=== Greeting ===
爱丽丝: 欢迎来到这里。
-> return

这里 => Greeting 会建立返回位置,-> return 回到“继续主线”。如果改用 -> Greeting,原调用栈会清空,不能再假定存在可返回的位置。

指令 语义
-> Label 清空调用栈并跳至目标节
=> Label 记录返回位置并调用目标节
-> return 弹出调用帧;没有调用帧时属于控制流错误
-> break 退出最近活动循环,继续其后的内容
-> end 根节内结束文件;命名节内清栈并恢复其源码后方首个根节节点

命名节自然结束与其中的 -> end 行为相同,不会自动执行调用返回;需要返回就明确写 -> return。宿主也可用 Start(entryLabel: "Greeting") 指定入口,但该方式没有建立调用返回位置,上例仍需通过根节调用才可执行末尾的 return。

Forward-only 不禁止向后跳转或循环。它表示重新执行不会自动撤销之前的外部副作用;重复进入带演出或状态修饰符的拍,会再次分发这些修饰符。