2010-12-09 9 views
9

정적 클래스 함수를 루아에 바인딩하고 싶습니다. 아시다시피 정적 클래스 함수는 클래스 함수와 다른 점이 있습니다. 그래서 루아에서 함수 호출 코드는 다음과 같이해야한다 ...루아에서 네임 스페이스를 만드는 방법?


//C++ 
lua_tinker::def(L, "Foo_Func", &Foo::Func); 

//Lua 
Foo_Func() 

하지만 난 그런 식으로 사용할 수있는 방법이 있나요이


//Lua 
Foo.Func() 

같은 루아에서 함수를 호출하려면? Lua 테이블이 도움이 될 수 있습니다. 그러나 나는 어떤 참고 문헌도 찾을 수 없다.

답변

9

그렇습니다. 테이블을 사용하면 실제로 require으로 가져올 때 대부분의 모듈이 어떻게 작동하는지 알 수 있습니다.

Foo = {} -- make a table called 'Foo' 
Foo.Func = function() -- create a 'Func' function in stored in the table 
    print 'foo' -- do something 
end 
Foo.Func() -- call the function 
+1

당신이 선언 된 경우 기억 가 푸 :이 통과 할 푸 : Func을() (''통지) 테이블도 첫 번째 함수 매개 변수로. – Goles

4

가장 흥미로운 점은 PiL chapter 26.2입니다. 라이브러리를 테이블과 동일한 이름으로 컴파일하면 (그래서 filename == modulename) 모듈을 require() 할 수 있습니다. 이 Foo.Func = 기능 (이) ... 끝 당신이 그것을 호출 할 수 있습니다 :

관련 문제