圖和成員
一個文件包含一個或多個圖,列在左側的文件大綱中:文件自身的圖 Document,以及位於其下的其他圖。每個圖都有一個種類,它決定圖的繪製方式、提供哪些節點以及執行意味著什麼。畫布上方會顯示種類及其所屬的類別,例如 Flows · dataflow、Routine · procedural。其中,dataflow(資料流)表示值沿連線流動,節點在需要其結果時執行;procedural(過程式)表示各步驟依次執行;definition(定義)表示描述一個型別,而不是執行。
圖的種類
| 種類 | 類別 | 說明 |
|---|---|---|
| Flows | dataflow | 一塊自由形式的畫布。值沿連線傳遞,執行時執行標記為啟用的節點及其依賴的所有內容。它是日常用於探索和組裝的工作區。 |
| Function | dataflow | 其他圖可以像呼叫節點一樣呼叫的圖:有一個 Input 節點和一個 Output 節點,兩者之間的每個節點都會執行。 |
| Events | procedural | 由應用程式框架呼叫的回撥:Start、每幀呼叫的更新,以及框架提供的其他回撥。 |
| Routine | procedural | 按順序執行的步驟:一個 Begin、沿執行連線排列的語句,以及 Return。迴圈和分支都在這裡。 |
| Type | definition | 你自己的資料結構:資料成員,以及作為其方法的 Function 或 Routine 圖。它不會單獨執行;由其他圖建立它的例項。 |
新增圖
按 Ctrl+T,或按一下文件大綱中的 Add graph…。Add a graph 卡片將各種類分別列在 Dataflow、Procedural 和 Definition 下,每種都附有一句話說明其用途。選擇一種,輸入 Name,然後按一下 Add graph;該圖會被新增到文件中並開啟。

在大綱中,按一下某個圖即可顯示它,右鍵按一下則可選擇 Rename…、Set as entry 和 Delete…。F2 會要求為目前顯示的圖輸入新名稱。
入口圖
入口圖是文件執行的起點,大綱中將其標記為 entry。新文件的入口圖名為 Graph,其種類為在 New document 卡片上選擇的種類。右鍵按一下另一個圖並選擇 Set as entry,即可將標記移到該圖上;入口圖可以是 Flows、Function、Events 或 Routine 圖,但 Type 永遠不能作為入口。目前顯示的圖是 Routine 或 Events 圖時,Run 會改為執行該圖,這樣就可以單獨試執行文件的某一部分。
Function
Function 是一個帶有簽名的圖,其他圖可以像使用節點一樣呼叫它。
- 按
Ctrl+T,選擇 Function,將其命名為Twice,然後按一下 Add graph。它的畫布上有一個 Input 節點和一個 Output 節點。 - 在未選中任何內容時,Properties 面板會列出該 Function 的 Inputs 和 Outputs。在 Inputs 下按一下 Add entry:會出現一個名為 Input、型別為 Number 的條目。在其 Name 中輸入
Value,然後按Enter。在 Outputs 下執行相同操作,將其命名為Result。條目的初始型別為 Number;要使用其他型別,請按一下其 Type 並從列表中選擇:列表先列出常用型別,然後是文件中節點所使用的型別。 - 放置一個 Add(托盤中 Number Routines 下的那個),將 Input 節點的 Value 連線到它的兩個輸入,然後將它的輸出連線到 Output 節點上的 Result。
- 回到一個 Flows 圖,按
Ctrl+Space並輸入Twice:你的 Function 會出現在以文件命名的標題 Document Modules (Hello) 下。放置它後,它就像任何其他節點一樣,接受一個 Value 並給出一個 Result。
重新命名條目、更改其型別或調整其順序時,連線都會保留,每個呼叫該 Function 的節點也會隨之更新。
Routine
Routine 從 Begin 開始,沿著執行連線逐條執行語句。它的語句是帶有執行引腳(以箭頭繪製)的節點,例如 Print Line、Branch 和各種迴圈;沒有執行引腳的節點(例如 Add)會在某條語句需要其值時執行。
迴圈體連線在迴圈的 Next 引腳上,每輪執行一次;迴圈之後的內容連線在 Completed 上。下面這個 Routine 會列印 0、1 和 2:
- 建立一個入口為 Routine 的文件(或按
Ctrl+T並選擇 Routine),它一開始就帶有 Begin 和 Return。 - 按
Ctrl+Space並輸入For:第一個結果就是 Procedural Programming 下的迴圈。放置它。它按 Step 從 Start 計數到 End(包括兩端),如果你不修改,這三個值分別為0、10和1。將 End 設為2。 - 放置一個 Print Line。將 Begin 的 Next 連線到 For 的 Previous,將 For 的 Next 連線到 Print Line 的 Previous,將 For 的 Current Value 連線到 Print Line 的 Message。
- 將 For 的 Completed 連線到 Return 的 Previous,然後按
F5。

Return 無論在何處被執行到,都會結束 Routine:如果改為將它連線在迴圈體內的 Print Line 之後,程式會列印 0 後停止。一個 Routine 可以有多個 Return。
區域變數
Routine 在執行時可以儲存自己的值。在未選中任何內容時,按一下 Properties 面板中的 Define local variable…(或在托盤中尋找 Define Local Variable),為其命名並選擇型別。之後托盤會為它提供 Get 和 Set 節點。每次呼叫 Routine 時,該變數都會從其初始值開始,如果沒有初始值,則從其型別的預設值開始。
Events
Events 圖是應用程式框架上的一組回撥:你放置框架的事件(Start 以及框架提供的其他事件),並在其後連線語句,由框架決定每個事件何時執行。使用哪個框架由圖的 Procedural base type 決定,在未選中任何內容時顯示在 Properties 面板中,新建的 Events 圖為 BasicApplication。按一下它可以選擇其他框架,例如用於帶按鈕視窗的框架,或用於帶幀迴圈遊戲的框架。Events 圖可以包含自己的 Function 和 Routine,供其回撥呼叫:在未選中任何內容時,按一下其 Properties 中的 Define behavior member…。GUI 和 Glaze 類別中的示例很值得開啟看看,請參閱示例。
Type
Type 定義一個資料結構:它的資料成員,以及其中作為方法的 Function 或 Routine 圖。其他圖使用它的 Make 節點(對於名為 Point 的 Type,即 Make Point)建立例項,並讀取和設定其成員。在其畫布上未選中任何內容時,Properties 面板中的 Type kind 用於在以下幾種之間選擇:Class,由所有持有它的物件共享;Struct,一個會被複制的值;Record,由其成員一次性構建,之後不再更改。
資料成員和初始值
資料成員是屬於某個型別、並在多次呼叫之間保持不變的值,例如累計總數、分數或設定。文件本身就是一個型別,因此它自身的圖 Document 可以包含供其中所有圖共享的資料成員,Type 也可以包含資料成員。
按一下大綱中的 Document,顯示文件自身的圖。在未選中任何內容時,按一下 Properties 面板中的 Define data member…。(托盤中也有,名為 Define Data Member。)
Define a data member 卡片會要求輸入 Name 和 Type。列表先列出 Number、Integer、Text 和 Truth,然後是它們各自的列表和陣列(List of Number、Number Array 等),再往後是 Divooka 的其他常用型別,以及文件中節點輸出或接受的型別。將其命名為
Total,選擇 Number,然後按一下 Define。畫布上會放置該成員的節點,此後托盤會在文件的每個圖中提供 Get Total 和 Set Total。
選中該成員的節點。其 Properties 列出它的 Name、Type 和 Starting value。在 Starting value 中輸入
2並按Enter:狀態列顯示 Set starting value,節點上也會顯示該值。

每次執行開始時,Total 都為 2;列印 Get Total 的 Routine 會列印 2。框旁邊的叉號可將其重置為型別的預設值。列表或陣列也可以設定初始值,逐個元素設定;結構體則逐個部分設定,例如初始值為 X 1、Y 2 的 Point。Flows 圖不能擁有自己的資料成員;請在文件的圖或 Type 上定義它們。
要重新命名成員,請按兩下其節點的標題列,或選中它並按 F2:所有讀取或設定它的節點都會隨之更新。