Lua 中的十六进制函数是什么?

当我使用 debug.getinfo 调试脚本时,它会返回一个十六进制数字表示的函数,如下所示:

function: 0xa02c196dd610cfa6,

我想知道十六进制函数是什么,以及如何使用 debug 库来处理这些函数。

点赞
用户9922866
用户9922866

此页面所示,debug.getinfo返回的是一个表格,而不是一个函数。

debug.getinfo返回的表格包含了一些信息,例如给定函数的名称、当前给定函数的行以及上值的数量,即给定函数可以访问的本地变量的数量。这些是调试时重要的信息。

要检查由debug.getinfo返回的表格中包含的信息,请尝试以下代码:

function foo()
   -- `1' refers to the current layer of the call stack, that is, this very function.
   return debug.getinfo(1)
end

t = foo()
for k, v in pairs(foo) do
    print(k, v)
end

此外,关于您关于函数十六进制地址的问题:鉴于Lua是一种内存安全的语言 - 这意味着它不允许直接访问内存 - 拥有一个函数的地址意义不大。函数在内存中占用一定的空间,函数的十六进制地址指的是它在内存中占用的第一个字节。在Lua中,函数是一级变量,这意味着它们可以像数字、字符串等一样传递。因此,与C / C ++和类似语言不同,没有函数指针。因此,拥有一个函数的十六进制地址不会让您做任何特殊的事情。

2020-03-01 06:57:02