我一直在尝试为 Scala 创建功能响应式编程框架。目前我感到困惑的一件事是当前的实现如何处理表示顶层的行为。为了解释我的意思,我举个例子。假设我有一个 JPanel,我想这样做:
JPanel panel = new Panel()
panel.setBackground(new Behaviour(time => Color.red))
虽然这里的颜色是静态的,但我们希望面板背景在 Behavior 的值更新时更新。到目前为止,我所做的方式本质上是使用事件创建离散化的行为(可通过changes
行为上的函数访问)。这基本上只是行为发生变化时发生的事件源。使用这里 setBackground 的实现将是:
def setBackground(color : Behaviour[Color]) {
super.setBackground(color.now)
color.changes.each(change => super.setBackground(change))
}
这感觉有点乱。有人对这是否是一种不好的方法有任何建议吗?我今天一直在看 Elliott 的Push-Pull FRP,感觉我可能会朝着正确的方向前进,但在某个地方迷路了。
编辑:如果没有人有明确的解决方案,那么想法/想法会很棒!