546. 【Lua】自省机制(Introspective Facility)

调试库中主要的自省函数是 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:该字段是该函数本身。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua的标准库能与C语言的API直接实现 基础函数库 协程库 string库 table库 math库 io库 操...
    JunChow520阅读 9,793评论 0 10
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,736评论 0 38
  • Lua之参考 https://www.yiibai.com/lua/lua_basic_syntax.html[h...
    xiao_mini阅读 3,935评论 0 0
  • 前言 Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态...
    奋拓达阅读 3,325评论 0 0
  • 函数定义 在kotlin中,函数终于成为一等公民,支持面向过程终于在 “JAVA”阵营中成为了现实。 顶级函数 在...
    积跬步以致千里_ylc阅读 3,073评论 0 0