我正在尝试组合一个 lua 测试框架,让您知道有问题的函数,但是当我从 loadstring 切换到 时_G
,(我切换以便我的测试工具可以看到函数调用的结果)我的函数开始使用'nil' 代表函数名
为什么_G
在下面的代码中检测不到当前函数的名称?另外,如何从 loadstring 获取返回结果(即来自 blah 调用的“false”)或在使用时设置函数名称_G
(即告诉 lua 解释器函数名称应该是什么)?
function run_test(one, two)
if one ~= two then
print(debug.getinfo(2).name..' Failed')
end
end
function blah()
run_test(false, true)
return false
end
local fname = 'blah'
local status, result = pcall(_G[fname]) -- Outputs 'nil'; result is 'false'
local status, result = pcall(loadstring(fname..'()')) -- Outputs 'blah', result is 'nil'
我需要的主要是一种使用函数名称字符串调用函数的方法,能够在调用中看到函数名称(测试失败指向失败的函数,如 fname = 'blah' 在上面的代码)并能够得到返回值
local fname = 'blah'
status, result = pcall(??Call fname somehow??)
assert(status)
assert(not result)
--stdout should be "blah Failed"