Передайте аргументы командной строки в lua, используя java

Я пытаюсь запустить скрипт lua из java, используя приведенный ниже код, и он работает нормально.

Globals globals = JsePlatform.standardGlobals();
LuaValue chunk = globals.loadfile("com/example/hello.lua");
chunk.call();

Теперь я хочу передать аргументы командной строки в свой сценарий lua, может ли кто-нибудь помочь mw с кодом, как передать аргумент командной строки в файл lua из java.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, вы используете LuaJ. Во-первых, «куски» Lua — это просто специальные функции, которые получают свои аргументы в ... vararg. hello.lua может выглядеть следующим образом:

local arg1, arg2 = ...
print("arg1", arg1, "arg2", arg2)

Используя loadfile Lua, вы можете передавать аргументы просто как аргументы функции при выполнении загруженного фрагмента:

local chunk = assert(loadfile"hello.lua") -- compile & load the file, do not run it
chunk("first arg", "second arg") -- run the file with two args

Ваш текущий код Java вызывает chunk.call() без каких-либо аргументов, что эквивалентно chunk() в Lua. Вы можете использовать метод invoke для передачи списка LuaValue аргументов:

Просто замените chunk.call(); на

chunk.invoke(new LuaValue[] {LuaValue.valueOf("first argument"), LuaValue.valueOf("second argument")});

для вызова фрагмента с двумя аргументами, эквивалентными вызову в приведенном выше примере Lua.

Другие вопросы по теме