狀態
理解狀態是讓程式行為可預測的關鍵。
資料流上下文並不是“純”的。每次執行時,某些東西可能已經發生了變化,下一次執行時我們可能會得到不同的結果。從大的層面看,檔案和資料可能會被建立或刪除;從小的層面看,圖變數也可能導致執行行為發生變化。
在下面的示例中,我們對一個模組變數的值進行遞增。
Declare: MyNumber
Get MyNumber
>| Add 1
>| Set MyNumber
MyNumber 首次建立時,會被賦予預設值 0。這段程式碼第一次執行時,MyNumber 變為 1。那麼第二次執行時會怎樣?
變數一旦宣告,就只會被建立一次,因此它的值不會被重置。第二次執行 Get MyNumber 時,它會得到 1。所以設定之後的最終值將是 2。這個示例說明了狀態如何改變程式的行為。
狀態是某個事物目前儲存的值,它在多次執行之間持續存在,並可能影響之後的行為。換句話說,狀態是程式隨時間記住的任何資料,使得接下來發生的事情可以取決於之前發生的事情。
在這個示例中:
MyNumber是狀態- 它的值隨時間變化(
0 → 1 → 2) - 由於狀態已經改變,每次執行的行為都不同
用法
狀態在資料流上下文中非常有用,下面給出兩個示例。
使用者購物車
在電子商務網站中,“購物車”頁面可能取決於目前的商品——如果購物車是空的,我們就不顯示“去結算”。
空購物車狀態
你的購物車
你的購物車是空的。
有商品的購物車狀態
你的購物車
商品 A
$10
商品 B
$15
合計:$25
應用/遊戲的輸入行為
在圖形應用程式中,使用者按一下按鈕時可以改變事物的狀態,例如地圖的縮放級別。
備註
通常,狀態不會在資料流上下文中被直接修改,而是可能出現在資料流上下文所使用的子圖中。
(截圖)