私はScala.Reactと問題に関する更新された論文をSignal
調べて、単純なベースの例を機能させようとしています。
Signal
この論文のメソッドはそのままでは存在しないことを理解していますが、代わりに と がStrict
ありLazy
ます。だから私の素朴な最初の試み:
全体の設定:
object dom extends scala.react.Domain {
val engine = new Engine
val scheduler = new ManualScheduler
}
import dom._
構成を試す:
val v1, v2 = Var(0)
val f = Strict { v1() + v2() }
2行目はクラッシュします
java.lang.AssertionError: assertion failed: This method must be run on its domain
scala.react.NilDebug@4eaf6cb1
at scala.Predef$.assert(Predef.scala:179)
at scala.react.Debug.assertInTurn(Debug.scala:37)
at scala.react.EngineModule$Propagator.defer(EngineModule.scala:120)
...
だから私は何か間違ったことをしているに違いない。しかし、何?
2 回目の試行:
scala> dom.start()
scala> var v1, v2, f = (null: Signal[Int])
v1: dom.Signal[Int] = null
v2: dom.Signal[Int] = null
f: dom.Signal[Int] = null
scala> schedule { v1 = Var(0); v2 = Var(0) }
scala> schedule { f = Strict { v1() + v2() }}
scala> engine.runTurn()
scala> schedule { println(f.now) }
scala> engine.runTurn()
Uncaught exception in turn!
scala.react.EngineModule$LevelMismatch$