gpt4 book ai didi

Scala、GUI 和不变性

转载 作者:行者123 更新时间:2023-12-04 04:21:33 25 4
gpt4 key购买 nike

我创建了一个计算某些事物的算法。这可以被认为是模型。该算法以全功能方式实现,因此它仅使用不可变类。
现在使用这个模型,我想在它上面开发一个 GUI 层。但是,我对在 Scala 中构建 GUI 的最佳实践一无所知。我打算使用 ScalaFX。

我的问题如下:在 ScalaFX(类似于 JavaFX)中,您可以将 GUI 中的值绑定(bind)到对象属性。这显然违反了函数范式,但看起来很方便。
这将需要重写我的类以使用可绑定(bind)的属性,这感觉就像摇尾部一样——模型将依赖于 GUI。

另一方面,我可以有一个独立的 GUI 层。在这种情况下,我需要绑定(bind)代理对象,并且必须基于这些代理对象创建模型对象。这会感觉更惯用,但意味着大量的代码重复和额外的工作。我的模型和代理对象必须保持同步,并且我必须负责复制属性。

这样做的好方法是什么? GUI 总是充满了可变性,所以函数式编程在这里并不合适。尽管如此,我还是喜欢 Scala,所以我也想继续将它用于 GUI。

最佳答案

尽管付出了额外的努力,但还是采取第二种方法。为每个模型创建小的可变“ View ”实例。将 View 绑定(bind)到小部件并安装观察者或 Hook ,以根据模型中的更改更新 View 代理。不要让 GUI API 决定你的并发方法和模型应该是什么样子。

我相信有一些开源库可以为普通的 Scala-Swing 或 Scala-FX 提供更多功能和/或 react 性的抽象层。

关于Scala、GUI 和不变性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26962359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com