546. 【Lua】自省机制(Introspective Fac

2023-01-10  本文已影响0人  七镜

调试库中主要的自省函数是 getinfo,该函数的第一个参数可以是一个函数或一个栈层次。当为某个函数 foo 调用 debug.getinfo(foo) 时,该函数会返回一个包含与该函数有关的一些数据的表。这个表可能具有以下字段。

  1. source: 该字段用于说明函数定义的位置。如果函数定义在一个字符串中(通过调用 load),那么 source 就是这个字符串;如果函数定义在一个文件中,那么 source 就是使用 @ 作为前缀的文件名。
  2. short_src: 该字段是 source 的精简版本(最多 60 个字符),对于错误信息十分有用。
  3. linedefined: 该字段是该函数定义在源码中最后一行的行号。
  4. what: 该字段是该函数的一个适当的名称,例如保存该函数的全局变量的名称。
  5. namewhat: 用于说明上一个字段的含义,可能是“global”、“local”、“method”、“field” 或 “”(空字符串)。空字符串表示 Lua 语言找不到该函数的名称。
  6. nups: 该字段是该函数的上值的个数。
  7. nparams: 该字段是该函数的参数个数。
  8. isvararg: 该字段表明该函数是否为可变长参数函数(一个布尔值)。
  9. activeline:该字段是一个包含该函数所有活跃行的集合。活跃行(active line)是指除空行和只包含注释的行外的其他行。
  10. func:该字段是该函数本身。
上一篇 下一篇

猜你喜欢

热点阅读