考虑b = a + 7
。
我如何让b
与a
保持同步,以便即使a
随时间发生变化,该陈述仍然正确?
不仅如此,我怎么能让它反过来工作,如果a
也被更改,相应地更新b
?
答案 0 :(得分:2)
Ruby中没有相互绑定的变量。您可以使用匿名函数(aka.lambdas)来实现此目的。
a = 0
b = -> {a + 7}
b.() #=> 7
a = 100
b.() #=> 107
这对我来说有点难看,因为b
隐含取决于a
,这在函数式编程中并不好。
如果您不介意使用obj.attr
,也可以通过传统的OO实现此目的。
class Foo
attr_accessor :a
def b
a + 7
end
end
foo = Foo.new
foo.a = 0
foo.b #=> 7
foo.a = 100
foo.b #=> 107
答案 1 :(得分:1)