制御フローと Section トポロジー
このページは Ktory の設計原則 に従い、現在の契約と長期目標を区別します。
制御フローとセクション
Section titled “制御フローとセクション”ルートはソース順に進み、名前付きセクションの本文を読み飛ばします。規範の書式では、本文を === Label === より深くインデントし、宣言と同じ深さに戻るとルートの内容に戻ります。
: 物語が始まる。=> Greeting: 本筋を続ける。-> end
=== Greeting === アリス: ようこそ。 -> return=> Greeting は戻り先を記録し、-> return で「本筋を続ける」に戻ります。-> Greeting に置き換えると呼び出しスタックが空になるため、戻り先があるとは仮定できません。
| 指令 | 意味 |
|---|---|
-> Label |
呼び出しスタックを消去して対象セクションへ移る |
=> Label |
戻り先を記録して対象セクションを呼ぶ |
-> return |
呼び出しフレームを取り出して戻る。空スタックは制御エラー |
-> break |
最も近い活動中のループを抜け、その後へ進む |
-> end |
ルートではファイル終了。名前付きセクションではスタックを消去し、ソース上で後続する最初のルートへ進む |
名前付きセクションの自然終了も、その中の -> end と同じです。呼び出し元へ自動では戻りません。 戻る場合は -> return を記述します。ホストは Start(entryLabel: "Greeting") で入口を指定できますが、戻り先は作られないため、上の例の末尾の return はルートから呼び出した場合にだけ有効です。
Forward-only は前の記述へのジャンプやループを禁止しません。以前の外部副作用を自動で取り消さないという意味です。演出や状態変更を持つ拍へ入り直すと、修飾子も再度通知されます。
