【发布时间】:2014-08-20 11:45:03
【问题描述】:
来自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() 但这只是 size=1 的记忆化的特例,例如我可以这样做以防止使用memoization macro 重新计算:
var a = 1; var b = 2
@memoize(maxSize = 1) def c(x: Int = a, y: Int = z) = x + y
关于响应式编程,我有什么遗漏的地方可以深入了解为什么在某些情况下它可能是更好的范例(比记忆闭包)?
【问题讨论】:
标签: scala memoization reactive-programming frp scala.rx