我在另一种编程语言(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” “
答案 0 :(得分:2)
如Egor所述,您可以将结果转换为字符串,然后使用tostring
返回。
我还要补充一点,您可能想使用dostring
而不是loadstring
。
lua中的load
函数意味着编译且不运行块,相反,当调用它将运行该块时,它将返回一个函数。(loadfile
,{{1 }})
一个loadstring
函数将编译并运行内容。(do
,dofile
)
详细信息可以在这里找到: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