如何使用函数式编程“追踪”用户活动?
如何使用函数式编程“追踪”用户活动?
tl;dr
每帧调用一个名为onEnterFrame
的函数的程序,在这种情况下,如何存储和改变状态?例如,如果您正在制作一个层级编辑器或绘图程序,其中跟踪状态并进行小的增量更改非常有吸引力。使用最小的全局状态变化处理这种情况的最高效的方式是什么?
长版本:
在接受用户输入(如鼠标点击和按键)的交互式程序中,我们可能需要跟踪数据模型的状态。例如:
- 是否选择了某些元素?
- 鼠标光标是否悬停在元素上?哪一个?
- 鼠标按钮按下多长时间?这是单击还是拖动?
有时,我们需要对大型模型进行微小的更改:
- 在层级编辑器中,我们可能需要向现有大量prefab中添加一个墙。您不希望重新创建该集合,对吧?
阅读Frisby教授的“大多数合适的指南”,到目前为止,有许多解决从某个输入源中提取数据片段、在该数据上执行计算并将结果传递给某个输出的问题的功能性解决方案。
有时,应用程序允许用户交互并对数据执行一系列变换。例如,如果一个程序允许用户绘图(如Paint
)在画布上绘制,并且我们需要存储绘画的状态以及导致该状态的操作(用于撤消和日志记录/调试目的),该怎么办?
存储哪些state
是可接受的,而我们绝对要避免哪些呢?我目前的结论是,我们绝不能存储我们仅需要临时使用的状态,而应该直接将其传递给需要它的函数。
但如果有多个函数需要进行特定的计算怎么办?比如检查鼠标光标是否悬停在特定区域,为什么要重新计算?
有没有进一步最小化全局状态突变的方法?
admin 更改状态以发布 2023年5月21日