LuaRings - 如何在主状态下访问从属状态(通过stable.set)设置的值?

时间:2012-05-18 11:23:30

标签: lua

最小的例子实际上是Rings main page

的第二个例子
require"rings"

local init_cmd = [[
require"stable"]]

local count_cmd = [[
count = stable.get"shared_counter" or 0
stable.set ("shared_counter", count + 1)
return count
]]

S = rings.new () -- new state
assert(S:dostring (init_cmd))
print (S:dostring (count_cmd)) -- true, 0
print (S:dostring (count_cmd)) -- true, 1
S:close ()

S = rings.new () -- another new state
assert (S:dostring (init_cmd))
print (S:dostring (count_cmd)) -- true, 2
S:close ()

但是,我无法获得shared_counter的价值。 print(shared_counter)输出nil

我尝试使用stable.get(),但它说stable只能在奴隶状态下使用。 我终于尝试了

remotedostring("shared_counter = "..count)

哪个有效,但我不太确定这是否是一种正确的方法。我想直接访问stable值表是否足够?

编辑:哦,我忘了补充一点,问题的主要部分是以另一种方式进行通信 - 从主人到奴隶。

1 个答案:

答案 0 :(得分:2)

stable库将值存储在名为_state_persistent_table_的主状态的全局表中。虽然这显然是隐藏和私密的。

如果您对此感到不舒服,stable只是在内部使用remotedostring(),那么您自己也不会做这样的事情。

对于master-> slave,slave:dostring()应该足够,使用类似的技术。