2

LuaJ の Java メソッドから複数の値を返す方法を見つけようとしています。つまり、Java から複数の値を返し、Lua コード内で取得します。

もう一度...私が意味するのは:

public LuaValue call() {

    Dimension size = guiConsole.getSize();

    int width = LuaValue.valueOf(size.width), height = LuaValue.valueOf(size.height);

    return width, height; // This obviously wouldn't work, but this is the functionality I'm after

}

そのため、Lua コードから次のことができます。

width, height = getSize()

幅と高さの両方の取得に成功しました。

よろしくお願いします、

4

1 に答える 1

1

どうにかしてやり方を知ることができました。さらに調査を行った後、クラスを拡張できる VarArgFunction があることがわかりました。通常の「call()」メソッドのように LuaValue を返す代わりに、「invoke(Varargs v)」メソッドを使用します。これにより、LuaValues を含む Varargs オブジェクトを返すことができます。Varargs は、「LuaValue.varargsOf(LuaValue[] luaValues)」メソッドを使用して構築されます。

例:

public class GetSize extends VarArgFunction {

private Dimension size;

public GetSize(Dimension size) {

    this.size= size;

}

public Varargs invoke(Varargs v) {

    Varargs varargs = LuaValue.varargsOf(new LuaValue[] {LuaValue.valueOf(size.width), 
            LuaValue.valueOf(size.height)});

    return varargs;

}

}

そうは言っても、Lua の「getSize()」関数から 2 つの値を取得できるようになりました。

width, height = getSize()

わーい!

于 2015-09-15T06:47:17.923 に答える