替换RSRuby中变量的值

时间:2015-06-17 17:30:23

标签: ruby r

当我遇到这种奇怪的行为时,我很乐意使用RSRuby做一些数学运算:

irb(main):010:0> r = RSRuby.instance;
irb(main):011:0* r.assign 'e', 10
=> 10
irb(main):012:0> r.e
=> 10
irb(main):013:0> r.assign 'e', 20
=> 20
irb(main):014:0> r.e
=> 10

我有什么遗失的吗?

1 个答案:

答案 0 :(得分:0)

我通过重置r对象上的缓存来实现它:

2.2.0 :026 > r.e
=> 11
2.2.0 :027 > r.assign 'e', 22
=> 22
2.2.0 :028 > r.e
=> 11
2.2.0 :029 > r.reset_cache
=> #<RObj:0x007fa269341508 @conversion=4, @wrap=0>
2.2.0 :030 > r.e
=> 22

我的预感是rsruby接口保留了变量的缓存,分配确实会将新值发送给R,但是rsruby将旧值缓存在ruby端,然后重置缓存将导致rsruby从中获取值R上。