状态
理解状态是让程序行为可预测的关键。
数据流上下文并不是“纯”的。每次执行时,某些东西可能已经发生了变化,下一次执行时我们可能会得到不同的结果。从大的层面看,文件和数据可能会被创建或删除;从小的层面看,图变量也可能导致执行行为发生变化。
在下面的示例中,我们对一个模块变量的值进行递增。
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
应用/游戏的输入行为
在图形应用程序中,用户单击按钮时可以改变事物的状态,例如地图的缩放级别。
备注
通常,状态不会在数据流上下文中被直接修改,而是可能出现在数据流上下文所使用的子图中。
(截图)