我的问题有多个部分,但首先是我的示例lua代码( test.lua ):
local traceback = debug.traceback
local inspect = require('inspect')
local foo = "function nop(); print('this is war'); return true; end"
local f = loadstring(foo)
local result = f()
print(result)
local status, val= xpcall(function () return f() end,debug.traceback)
print('status .. ' .. tostring(status))
print(val)
所以,
当我运行local result = f()
时。我仍然将result
值视为nil
执行函数f
时。为什么我没有看到print
o / p。
答案 0 :(得分:4)
foo
中加载到f
的代码块并不会返回任何值。
它定义了一个函数,但它就是它。
如果要在运行时从块中返回该函数,则需要将return nop
添加到字符串的末尾。