圖和成員
一個文件包含一個或多個圖,它們列在文件大綱中:文件自身的圖 Document,以及位於其下的其他圖。每個圖都有一個種類,它決定了圖的繪製方式、提供哪些節點,以及執行它意味著什麼。種類名稱顯示在畫布上方,並附有它所屬的類別——Flows · dataflow、Routine · procedural——其中 dataflow(資料流)表示值沿著連線流動,節點在需要其結果時執行;procedural(過程式)表示步驟一個接一個地執行;declarative(宣告式)表示圖描述某樣東西,而不是逐步計算它;definition(定義)則描述一個型別。
種類
| 種類 | 類別 | 說明 |
|---|---|---|
| Flows | dataflow | 自由形式的畫布。值沿著連線傳遞,執行時會執行標記為 active 的節點及其所依賴的一切。它是日常用於探索和組裝的工作區域。 |
| Function | dataflow | 可以被其他影像節點一樣呼叫的圖:一個 Input 節點、一個 Output 節點,兩者之間的每個節點都會執行。 |
| Components | dataflow | 以資料流定義的物件:每個沒有被其他節點接收的輸出都會成為該物件的一個欄位,建立一個這樣的物件就是執行該圖。 |
| Events | procedural | 由應用程式框架呼叫的回撥——Start、每一幀的更新,以及框架提供的其餘回撥。 |
| Routine | procedural | 按順序執行的步驟:一個 Begin、沿執行連線排列的語句,以及 Return。迴圈和分支都在這裡。 |
| StateMachine | declarative | 由具名轉換連線起來的各個狀態,每個轉換都由一個條件把守。每個狀態的行為本身就是一個圖,而狀態機的資料成員是各狀態共享的內容。一次執行會進入第一個狀態,執行它,然後沿第一個條件成立的轉換繼續。 |
| Constructs | declarative | 由建構函式和工廠組裝而成的物件樹,沒有副作用——它是一份供其他圖讀取的描述。 |
| Type | definition | 你自己的資料結構:資料成員,以及作為其方法的 Function 或 Routine 圖。它不會單獨執行;其他圖會建立它的例項。 |
新增圖
按 Ctrl+T,或按文件大綱中的 Add graph…。Add a graph 卡片在 Dataflow、Procedural、Declarative 和 Definition 下提供各種種類,每種都附有一句說明其用途的話。選擇一種,輸入 Name,然後按 Add graph;該圖會被新增到文件中並開啟。

執行在應用程式框架上的圖會一併帶入該框架的包:如果將一個名為 Loop 的 Events 圖新增到尚未引用該框架所屬包的文件中,狀態列會顯示 Added Loop and declared Event Applications。一次 Ctrl+Z 會同時復原這兩項。
在大綱中,按一下某個圖可顯示它,右鍵按一下它可使用 Rename…、Set as entry 和 Delete…。F2 會要求為螢幕上的圖輸入新名稱。
入口圖
入口圖是文件執行開始的地方,大綱會將其標記為 entry。新文件的入口圖名為 Graph,其種類即在 Choose a workload 卡片上所選的種類。右鍵按一下另一個圖並選擇 Set as entry 可以移動該標記——可移至 Flows、Function、Events、Routine、StateMachine 或 Constructs 圖;Components 圖或 Type 永遠不能作為入口。
當標籤頁以 Interpreted 方式執行,且螢幕上的圖是 Routine、Events 圖或狀態機時,Run 會執行該圖而不是入口圖,這樣就可以單獨試驗文件的某一部分。Compiled 執行始終從入口圖開始。
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 的節點都會隨之更新。一旦本文件引用了另一個文件,就可以用同樣的方式使用其中的 Function——請參閱引用。
Routine
Routine 從 Begin 開始沿著執行連線,一條語句接一條語句地執行。它的語句是帶有執行引腳的節點——Print Line、Branch、各種迴圈——執行引腳繪製為箭頭;而沒有執行引腳的節點(例如 Add)會在某條語句需要其值時執行。
迴圈體掛在迴圈的 Next 引腳上,每輪執行一次;迴圈之後的內容掛在 Completed 上。下面這個 Routine 會列印 0、1 和 2:
- 建立一個入口為 Routine 的文件——在 Choose a workload 卡片上選擇 General Purpose 和 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 面板中——新建的圖為 BasicApplication。按一下它可以選擇其他框架:列表會提供文件所引用的包中的框架,因此由 GUI Development 工作負載建立的文件會提供它的兩個 GUI 框架。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:每個讀取或設定它的節點都會隨之更新。