用户界面 - 如何在 Scala 中将持久数据结构"bind"到 GUI?



每当更新持久数据结构 (PDS) 时,我都需要一个 GUI 控件来更新。

当用户执行某些操作时,我需要更新 PDS。

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

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

我一直在阅读有关FRP,镜头,演员等的信息......似乎可以有一种非常简单,干净,有效的方法来处理这种情况。

我能想到的是拥有一个对 PDS 具有可变引用的组件。每次更改 var 的值时,此组件都可以使用新版本的 PDS 引发事件。您的 GUI 控件可能正在侦听该事件,并通过使用新信息重新绘制自身来对其进行反应。另一种选择是侦听事件的组件是 GUI 控件的父级,通过创建它的新实例来做出反应,因此控件可以在构造函数中接收 PDS 并仅绘制自身一次。

持久数据结构永远不会更新。您可能具有对持久数据结构的引用,该结构在更改新版本时会更改为新版本。如果你想跟踪PDS中的增量变化,那将是很尴尬的。问题是,在你存储PDS的新版本时,你仍然拥有旧版本。也许您可以运行差异来产生增量更改。

是的,有一个很好和干净的方法:价值模型。在 Scala 中实现应该很容易(我在快速搜索中没有找到任何东西)。AFAIK Spring Rich Client 中嵌入了一个 Java 实现。

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

相关内容

  • 没有找到相关文章

最新更新