Lua返回作为字符串执行的结果

时间:2019-01-07 03:42:21

标签: lua executable vala

我在另一种编程语言(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” “

1 个答案:

答案 0 :(得分:2)

如Egor所述,您可以将结果转换为字符串,然后使用tostring返回。

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

lua中的load函数意味着编译且不运行块,相反,当调用它将运行该块时,它将返回一个函数。(loadfile,{{1 }})

一个loadstring函数将编译并运行内容。(dodofile

详细信息可以在这里找到:Lua: 8 – Compilation, Execution, and Errors

  

与dofile一样,loadfile也会从文件中加载Lua块,但不会运行该块。相反,它仅编译块并将已编译的块作为函数返回。

本节将更直接地与dostring进行交流,但该页面涵盖了loadfile


如果未定义loadstring,则可能像这样:

dostring

如果稍后使用lua版本,则5.1 function dostring(s) return assert(loadstring(s))() end 变为loadstring