User interface 如何";绑定";Scala中GUI的持久数据结构?

User interface 如何";绑定";Scala中GUI的持久数据结构?,user-interface,scala,immutability,User Interface,Scala,Immutability,我需要一个GUI控件来更新持久数据结构(PDS) 当用户采取某些操作时,我需要更新PDS 例如,一个SWT树和一个简单的树数据结构 有很多手动的、丑陋的方法可以做到这一点,但在我看来,这是一种非常普遍的情况,可能会有一种非常干净的方法 我一直在读关于玻璃钢、镜片、演员等的书。。。似乎有一种非常简单、干净、有效的方法来处理这种情况。您如何描述它,似乎用户调用在GUI中执行某些操作,然后必须更新GUI和数据库。只要数据库更新是一种副作用,您就可以完全依赖所有SWT事件。持久数据结构永远不会更新。您可

我需要一个GUI控件来更新持久数据结构(PDS)

当用户采取某些操作时,我需要更新PDS

例如,一个SWT树和一个简单的树数据结构

有很多手动的、丑陋的方法可以做到这一点,但在我看来,这是一种非常普遍的情况,可能会有一种非常干净的方法


我一直在读关于玻璃钢、镜片、演员等的书。。。似乎有一种非常简单、干净、有效的方法来处理这种情况。

您如何描述它,似乎用户调用在GUI中执行某些操作,然后必须更新GUI和数据库。只要数据库更新是一种副作用,您就可以完全依赖所有SWT事件。

持久数据结构永远不会更新。您可能有一个对持久数据结构的引用,当您更改它时,它会更改为新版本。如果您想跟踪PDS中的增量更改,这将是一件尴尬的事情。问题是,在您存储PDS的新版本时,您仍然拥有旧版本。也许您可以运行一个diff来产生增量更改。

我可以考虑的是有一个对PDS的可变引用的组件。此组件可以在每次更改var值时使用新版本的PDS引发事件。GUI控件可能正在侦听该事件,并通过使用新信息重新绘制自身来对其作出反应。另一个选项是侦听事件的组件是GUI控件的父控件,通过创建它的新实例作出反应,因此控件只能在构造函数中接收PDS并绘制自身一次。

是的,有一种很好且干净的方法:。它应该很容易在Scala中实现(我在快速搜索中没有发现任何东西)。AFAIK中嵌入了Java实现。

持久数据结构不引用数据库。