5

scala.rx の例:

import rx._
val a = Var(1); val b = Var(2)
val c = Rx{ a() + b() }
println(c()) // 3
a() = 4
println(c()) // 6

上記のバージョンはどのように優れていますか:

var a = 1; var b = 2
def c = a + b
println(c) // 3
a = 4
println(c) // 6

私が考えることができる唯一のことは、最初の例は、unless aor bchangescが再計算されないという意味で効率的ですが、私のバージョンでcは、呼び出すたびに再計算されますc()が、それはサイズ = 1 のメモ化の特殊なケースです。メモ化マクロを使用して再計算を防ぐためにこれを行うことができます:

var a = 1; var b = 2
@memoize(maxSize = 1) def c(x: Int = a, y: Int = z) = x + y

特定の場合に (メモ化されたクロージャーよりも) 優れたパラダイムである理由についての洞察を提供するリアクティブ プログラミングについて理解するのに欠けているものはありますか?

4

1 に答える 1