【问题标题】:java - LuaJ: more than 3 argumentsjava - LuaJ:超过 3 个参数
【发布时间】:2015-03-04 14:41:27
【问题描述】:

是否有可能在 lua 函数中使用三个以上的参数?

这是我的一段代码:

LuaValue luaGlobals = JsePlatform.standardGlobals();
            luaGlobals.get("dofile").call(LuaValue.valueOf("./data/Actions/" + a_itemScript));

            LuaValue luaValLevel = CoerceJavaToLua.coerce(a_level);
            LuaValue luaValPlayer = CoerceJavaToLua.coerce(a_player);
            LuaValue luaValItem = CoerceJavaToLua.coerce(a_thing);
            LuaValue luaValItemX = CoerceJavaToLua.coerce(a_fromX);
            LuaValue luaValItemY = CoerceJavaToLua.coerce(a_fromY);

            LuaValue luaOnUse = luaGlobals.get("onUse");

            if(!luaOnUse.isnil())
            {
                luaOnUse.call(luaValLevel, luaValItemX, luaValItemY);
            }
            else
            {
                a_parent.WriteInConsole("\nx Cannot Run Script: " + a_itemScript);
            }

【问题讨论】:

    标签: java luaj


    【解决方案1】:

    使用 LuaValue.invoke() 代替 LuaValue.call()。它接受一个可以包含任意数量参数的 Varargs,并返回一个包含所有返回值的 Varargs:

    Varargs results = luaOnUse.invoke(
        LuaValue.varargsOf(new LuaValue[] { 
            luaValLevel, luaValPlayer, luaValItem, luaValItemX, luaValItemY }));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-07
      • 2015-03-08
      • 1970-01-01
      相关资源
      最近更新 更多