2014-10-03 5 views
1

는 D 프로그래밍 언어로 이것을 고려 : -이 아니라 솔루션으로LuaD 클래스 테이블 복사

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)에 삽입을 만드는 것이 가능하다 가장 좋은 해결책이 아닌 것 같습니다.

클래스 내에 정의 된 하나의 루아 스택을 다른 클래스의 다른 스택으로 복사하는 방법이 있습니까?

답변

0

LuaD 또는 Lua에 대해 많이 알지 못하지만,이 예제의 마지막 예제에 표시된대로 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)); 
} 
+0

나는이 사과 :하지만 난 당신의 방법에, 나는 D 측에서 각 변수의 유형을 정의 할 필요가 없습니다 것을 이해하지만, sturct의 경우, 내가 기대하고 무엇을 정의해야 l1.globals에서? – Sean

+0

그건 그렇고, 작동하지 않습니다. 오류 메시지 : k에 대해 유추 할 수 없으며 은 유 형을 추론 할 수 없습니다. – Sean

+0

맞습니다. 이전 코드가 작동하지 않았습니다. 나는 struct 메소드를 사용했다. 그리고 네,이 경우, 당신이 기대하는 것을 정의 할 필요가 있습니다. – yaz