- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试构建一个 lua 测试框架,让您知道有问题的函数,但是当我从 loadstring 切换到 _G
时,(我切换了,所以我的测试工具可以看到函数调用的结果)我的函数开始使用'nil'作为函数名
为什么可以_G
在下面的代码中没有检测到当前函数的名称?另外,如何在使用 _G
时从 loadstring 获取返回结果(即来自 blah 调用的“假”)或设置函数名称(即。告诉 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'
local fname = 'blah'
status, result = pcall(??Call fname somehow??)
assert(status)
assert(not result)
--stdout should be "blah Failed"
最佳答案
这是 Lua 用于为函数提供名称的启发式方法的限制。
在 Lua 中,所有函数都是匿名的。给定函数可以是多个变量的值:全局、本地和表字段。 Lua 调试系统试图通过查看正在执行的字节码来根据值的来源找到一个合理的名称。
考虑更简单的例子
blah()
pcall(blah)
blah
和
debug.getinfo(1).name
给出预期结果,
blah
.
pcall
的第一个参数。但它并没有进一步了解该论点的来源,以及
debug.getinfo(1).name
给
nil
.
_G[name]()
时,也会发生同样的事情。 .调试系统看到的只是表的一个字段,而该字段的名称离得太远了。
print(debug.traceback())
作为
blah
的第一行看看这个解释的另一种看法。
关于lua - 为什么 debug.getinfo(1) 的 'name' 为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18499086/
问题出在以下代码的toString方法中: import java.util.*; public class LinkedDeque // implements Deque { private No
关闭。这个问题需要debugging details .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 10 个月前关闭。 Improve this ques
我有以下代码(在 .NET 控制台应用程序中测试): var client = new SvnClient(); var previousRevisionUri = new SvnUriTarget(
在我发现的 SharpSvn 文档中 ( here ),SvnClient.getinfo 的返回值(boolean 类型)丢失了。有人可以帮忙吗?谢谢。 最佳答案 这是我得到的答案: Usually
本文整理了Java中com.koolearn.klibrary.text.hyphenation.ZLTextHyphenator.getInfo()方法的一些代码示例,展示了ZLTextHyphen
我正在尝试构建一个 lua 测试框架,让您知道有问题的函数,但是当我从 loadstring 切换到 _G 时,(我切换了,所以我的测试工具可以看到函数调用的结果)我的函数开始使用'nil'作为函数名
我正在对 Web 服务进行正常的 curl 调用,并通过以下方式获取返回的 HTTP 代码 $code = curl_getinfo ($ch, CURLINFO_HTTP_CODE); 它确实将 $
这是一个菜鸟问题。根据 Facebook API 文档,Users.getInfo() 函数中的性别字段会根据用户的区域设置返回值。因此,很难确定用户的性别。 有什么解决方案吗? 最佳答案 1) 这不
我有这行简单的代码: var entry = new DirectoryEntry("WinNT://DOMAIN/MachineName, Computer"); Console.WriteLine
我想获取响应中携带的Cookie(Set-Cookie: name=value; ...)。 传递信息常量和空列表的引用时: set_cookies = [] c.getinfo(c.COOKIELI
我是一名优秀的程序员,十分优秀!