LuaD类表复制

时间:2014-10-03 20:48:25

标签: lua d embedding

用D编程语言考虑这个:

import luad.all

class C1
{
auto l1 = new LuaState;
l1["somebool"] = true;

this()
~this()
}

class C2
{

C1 cc = new C1;
auto l2 = new LuaState;
// here I want to inject l1["somebool"] to l2
}

void main() { C2 cx = new C2; }

作为解决方案,我可能会创建一个局部变量

bool var = cc.l1["somebool"]

然后将其插入l2中 - 但这似乎不是最佳解决方案。

有没有办法将类中定义的一个lua堆栈复制到另一个类中的另一个堆栈?

1 个答案:

答案 0 :(得分:0)

我对LuaDLua了解不多,但您可以将全局变量提取到结构中,如此page上的最后一个示例所示。然后,您可以将结构中的值设置为l2状态。

// warning: untested

struct State
{
  bool somebool;
}

State state;
l1.globals.toStruct!State(state);

foreach (member; __traits(allMembers, State))
{
    l2.globals.set(member, __traits(getMember, state, member));
}