s2 pri-6ren">
gpt4 book ai didi

Lua 返回执行结果为字符串

转载 作者:行者123 更新时间:2023-12-04 20:30:14 25 4
gpt4 key购买 nike

我在另一种编程语言 (Vala) 中使用 luaVM,并希望将代码从 vala 传递给 lua,以便 lua 将执行此代码的结果作为字符串返回。

> s2="print (5+5)"
> s2
print (5+5)
> loadstring(s2)
function: 0x55834153f080
> func = loadstring(s2)
> func()
10

尝试了很多东西,但我没有成功,也就是说,我需要一个包含 10 的字符串类型的变量而不是 10。所以我可以对 Vala 执行 vm.to_string(-1) 并获得“10 "

最佳答案

正如 Egor 所说,您可以在使用 tostring 将结果返回之前将其转换为字符串。

我还要补充一点,您可能想使用 dostring 而不是 loadstring

lua 中的一个load 函数意味着编译并且不运行 block ,而是在调用时返回一个函数来运行 block 。(loadfile, 加载字符串)

do 函数将编译并运行内容。(dofile, dostring)

可在此处找到详细信息:Lua: 8 – Compilation, Execution, and Errors

Like dofile, loadfile also loads a Lua chunk from a file, but it does not run the chunk. Instead, it only compiles the chunk and returns the compiled chunk as a function.

这部分更直接地讲到loadfile,但页面覆盖了loadstring


如果 dostring 没有定义它可以像这样:

function dostring(s)
return assert(loadstring(s))()
end

如果你用的是lua以后的版本那么5.1的loadstring就变成了load

关于Lua 返回执行结果为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54068317/

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