来自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
我唯一能想到的是,第一个示例是有效的,因为除非a
或b
更改,c
不会重新计算,但在我的版本中,c
每次调用时都会重新计算,c()
但这只是大小 = 1 的记忆的特例,例如我可以这样做以防止使用记忆宏重新计算:
var a = 1; var b = 2
@memoize(maxSize = 1) def c(x: Int = a, y: Int = z) = x + y
关于反应式编程,我有什么遗漏的东西可以深入了解为什么在某些情况下它可能是一个更好的范例(比记忆闭包)?