2
에서 루아 함수를 호출
A
답변
1
LuaJ docs을 간단히 살펴보면 Lua 함수를 나타내는 org.luaj.vm2.LuaFunction
개체를 얻어야하고 그 다음에 invoke
메서드를 적용해야합니다.
0
예제가 도움이됩니다. 자바에서 루아 코드를 호출하는 것은 매우 간단하다.로드 스트링 같은 것을 통해 언제나 할 수 있기 때문이다. 이
Main.scala을 (이 스칼라 안에 당신에게 반환 값을 얻을 것이다) :
https://github.com/sylvanaar/luaj/blob/master/luaj-vm/examples/jse/SampleJseMain.java
모르겠어요https://github.com/sylvanaar/luaj/blob/master/luaj-vm/examples/jse/ScriptEngineSample.java
1
는, 어쩌면 이것은 당신이 원하는 무엇
import org.luaj.vm2._
import org.luaj.vm2.lib.jse._
object Main extends App {
val global = JsePlatform.standardGlobals()
global.get("dofile").call(LuaValue.valueOf("test.lua"))
val args: Array[LuaValue] = Array(LuaValue.valueof(1), LuaValue.valueof(2))
val retVals: LuaValue.Vararg = global.get("add").invoke(LuaValue.varargsOf(args))
println(retVals.arg(1))
}
test.lua :
,function add(a, b)
a = a or 0
b = b or 0
return a + b
end
참고 : 코드를 테스트하지는 않았지만 제대로 작동해야한다고 생각합니다.
편집 :이 질문은 스칼라와는 아무런 관련이 없다는 것을 알지 못했습니다. (스칼라의 문제를 해결하려고 생각했습니다. 그러나 demon_ds1은 내 대답을 기반으로 한 Java 솔루션을 찾은 것 같습니다. 이제는 자신의 답변을주었습니다. 그래서이 혼란스러운 답변에서 좋은 점을 발견했습니다.
11
나는이 같은 문제를 해결하기 위해 둘러보고 있었고, 난이 Profetylen의 대답과 매우 비슷한 함께했다
test.java :
import org.luaj.vm2.LuaValue;
import org.luaj.vm2.lib.jse.JsePlatform;
public class test
{
public static void main(String[] args)
{
//run the lua script defining your function
LuaValue _G = JsePlatform.standardGlobals();
_G.get("dofile").call(LuaValue.valueOf("./test.lua"));
//call the function MyAdd with two parameters 5, and 5
LuaValue MyAdd = _G.get("MyAdd");
LuaValue retvals = MyAdd.call(LuaValue.valueOf(5), LuaValue.valueOf(5));
//print out the result from the lua function
System.out.println(retvals.tojstring(1));
}
}
test.lua :
function MyAdd(num1, num2)
return num1 + num2
end
관련 문제
- 1. PGT 및 PGTIOUs 저장 CAS 생성
- 2. 그래서 나는이 스크립트가
- 3. 그래서 사소한 것 : Java에서 ""쓰기
- 4. 그래서
- 5. 그래서
- 6. 그래서 사용하여 포함하는 디렉토리
- 7. Lua 함수를 Java에서 멤버 변수로 포함하기
- 8. 파멸 그래서 나는이 그래서 여기에 질문을 다음되었다
- 9. 그래서 에코가 울리지 않습니다.
- 10. 그래서 아이폰
- 11. 경계하고 그래서
- 12. 그래서 안드로이드
- 13. dll에서 함수를 호출하려면 어떻게해야합니까?
- 14. Luaj를 사용하여 Java 코드를 실행하는 _G에 함수를 추가하려면 어떻게해야합니까?
- 15. 내가 벡터화 방법 그래서
- 16. 어떻게 내가 LongListSelectorItem 그래서
- 17. 방법, 그래서 여기에
- 18. jQuery를() 메소드는 그래서,
- 19. 그래서 파일 1
- 20. PDO 잘못된 그래서 수
- 21. 일부 값은 그래서 기능
- 22. 간단한 그래서 자바 문자열
- 23. 그래서 일반적으로 bash는 bash는
- 24. 그래서 매우 asp.net mvc
- 25. DisplayAttribute는 ... 그래서 확인 메시지
- 26. 그래서 내가 XML의 덩어리가
- 27. 작품, 그래서 여기에 맥
- 28. 하스켈은 '어디'와 가드 그래서
- 29. 그래서 여기에 ID
- 30. SQL은 각 주자 그래서
마음이 더 정확합니까? 스크립트가로드 될 때 이외에 LuaFunction 객체를 가져올 방법이 전혀 없습니다 (작동하지 않으면 어떻게 메소드 자체를 호출 할 수 있습니까?) – PuppyKevin
또한 [더 많이 검색하면 [http : //stackoverflow.com/questions/8956564/luaj-import-lua-methods)는 내가 가지고있는 것과 정확히 같은 질문이지만, 질문자는 그의 일을 끝내는 방법을 버리지 않았습니다. – PuppyKevin
자바 개발자가 루아 라이브러리 기능을 해석/실행하기 위해 LuaFunction이 내부 용이므로 옳은 대답이라고 생각하지 않습니다. – Splash