Я не знаю, может быть, это то, что вы хотите сделать: (Это поможет вам возвращаемые значения в Scala)
Main.scala:
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 на основе моего ответа, и теперь он дал свой собственный ответ, поэтому я рад, что из этого путаного ответа вышло что-то хорошее!
Ум более точным? Я не вижу никакого способа захватить объект LuaFunction, кроме того, когда загружается скрипт (что бы не сработало, как бы я вызвал сам метод?) – PuppyKevin
Кроме того, при поиске более [этот вопрос] (http: //stackoverflow.com/questions/8956564/luaj-import-lua-methods) - это тот же самый вопрос, что и у меня, но он не оставил свой метод выполнения работы. – PuppyKevin
Я не думаю, что это правильный ответ, поскольку LuaFunction используется для внутреннего использования, для разработчика Java для интерпретации/выполнения функции библиотеки lua. – Splash