gpt4 book ai didi

java - 在 LuaJ 中获取打印调用

转载 作者:行者123 更新时间:2023-11-30 08:59:33 25 4
gpt4 key购买 nike

我正在编写一个 Java 程序,它使用 Lua 脚本来确定将什么输出到程序的某些区域。目前,我的代码看起来是这样的:

Globals globals = JsePlatform.standardGlobals();
LuaValue chunk = globals.loadfile(dir.getAbsolutePath() + "/" + name);
chunk.call();
String output = chunk.tojstring();

问题是调用 tojstring() 似乎从 Lua 脚本返回 return 值。这很好,但我需要调用 print,因为这将显示在屏幕上。到目前为止,print 调用直接发送到控制台(打印到控制台),我想不出检索这些打印调用的方法。

我曾尝试深入研究文档,但收效甚微。如果需要,将从 LuaJ 更改。

最佳答案

扩展 Joseph Boyle 的回答(几年后):如果这是您的毒药,您还可以将 printStream 设置为 ByteArrayOutputStream(无需对磁盘上的文件执行此操作)。我在使用 LuaJ 的 JUnit 测试中做了这个并且它有效:

  @Test
public void testPrintToStringFromLuaj() throws IOException {
String PRINT_HELLO = "print (\"hello world\")";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream printStream = new PrintStream(baos, true, "utf-8");
Globals globals = JsePlatform.standardGlobals();
globals.STDOUT = printStream;
LuaValue load = globals.load(PRINT_HELLO);
load.call();
String content = new String(baos.toByteArray(), StandardCharsets.UTF_8);
printStream.close();
assertThat(content, is("hello world\n"));
}

关于java - 在 LuaJ 中获取打印调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27195534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com