Tôi đang cố gọi hàm lua trong chương trình Java bằng LuaJ. Nó hoạt động tốt khi tôi không vượt qua bất kỳ đối số nào để đóng cửa:Truyền đối số cho hàm lua với luaj
String script = "print 'Hello World!'";
InputStream input = new ByteArrayInputStream(script.getBytes());
Prototype prototype = LuaC.compile(input, "script");
LuaValue globals = JsePlatform.standardGlobals();
LuaClosure closure = new LuaClosure(prototype, globals);
closure.call();
Nhưng bây giờ tôi đang thử một kịch bản lua với chức năng cấp cao cần tranh cãi và tôi không thể tìm ra cách để vượt qua trong đối số từ Java. Dưới đây là những gì tôi có cho đến nay:
String script = "function something(argument)\n"+
"test_string = 'Hello World!'\n"+
"print(test_string)\n"+
"print(argument)\n"+
"end";
InputStream input = new ByteArrayInputStream(script.getBytes());
Prototype prototype = LuaC.compile(input, "script");
LuaValue globals = JsePlatform.standardGlobals();
LuaClosure closure = new LuaClosure(prototype, globals);
closure.invokemethod("something", CoerceJavaToLua.coerce("Foo"));
Điều này dẫn đến một ngoại lệ trên dòng invokemethod:
org.luaj.vm2.LuaError: attempt to index ? (a function value)
Nhờ sự giúp đỡ của bạn!
Điều đó dường như không phải vậy. Tôi nhận được cùng một lỗi chính xác. Ngoài ra, nếu kịch bản không chính xác bằng cách nào đó, không nên cuộc gọi LuaC.compile đã thất bại? – nerdinand