2011-12-23 5 views
1

루아 자바에서 루아 함수 호출로부터 어떻게 값을 되 찾을 수 있습니까? 다음과 같이 내가 자바에있는 함수를 호출루아 결과 얻기 루아 자바에서 루아 함수 호출로 돌아 가기

function foo(n) return n*2 end 

:

내가 calc.lua가 있다고 가정하자

지금은 결과를 얻을 수 LuaState 객체에 전화를해야 할 것
LuaState luaState; 
this.luaState = LuaStateFactory.newLuaState(); 
this.luaState.openLibs(); 
this.luaState.LdoFile("calc.lua"); 
this.luaState.getGlobal("foo"); 
this.luaState.pushNumber(5.0); 
int retcode=this.luaState.pcall(1, 1,0); 

마지막 함수 호출 foo (5)?

호출에서 반환 값을 사용하여 Java-> Lua 호출을 보여주는 예가 있습니까?

답변

2

트릭을 수행하겠습니까?

int top_index = luaState.getTop(); 
double result = luaState.isNumber(top_index) ? 
       luaState.toNumber(top_index) : 0.0; 
+2

루아는 네거티브 인덱스를 사용하여 스택의 맨 위를 가리킬 수도 있습니다. 그래서 본질적으로'double result = luaState.toNumber (-1)'만하면됩니다. 숫자가 아닌 경우 0을 반환하기 때문입니다. –

+0

감사합니다. 난 아직도 LuaState.pcall (..) 실행 문제가있어 기본적으로 반환 값을 pcall (..)의 실행 중 일부 오류 할 일이 아니에요 http://stackoverflow.com/questions/8621471/luajava-error -in-error-handling – Androider

+0

아마도 오류 처리기를 올바르게 설정하지 않았습니까? – Androider