LuaJ 中的多个 return 值
Multiple return values in LuaJ
我一直在尝试从 LuaJ 中的 Java 方法中找到 return 多个值的方法。也就是说,return 来自 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()
成功获取宽度和高度。
此致,
我设法找出了如何去做。在做了更多研究之后,发现有一个 VarArgFunction 可以扩展 class 。然后 returning 你的 LuaValue 就像你通常在 "call()" 方法中那样,你使用 "invoke(Varargs v)" 方法。这允许您 return 包含 Lua 值的 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()" 函数检索两个值!
width, height = getSize()
耶!
我一直在尝试从 LuaJ 中的 Java 方法中找到 return 多个值的方法。也就是说,return 来自 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()
成功获取宽度和高度。
此致,
我设法找出了如何去做。在做了更多研究之后,发现有一个 VarArgFunction 可以扩展 class 。然后 returning 你的 LuaValue 就像你通常在 "call()" 方法中那样,你使用 "invoke(Varargs v)" 方法。这允许您 return 包含 Lua 值的 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()" 函数检索两个值!
width, height = getSize()
耶!