我要回到这里的基础知识,但在Lua中,你可以像这样定义一个表:
myTable = {} myTable [1] = 12
打印表引用本身会返回指向它的指针.要访问其元素,您需要指定一个索引(即与数组完全一样)
print(myTable ) --prints pointer print(myTable[1]) --prints 12
现在功能是一个不同的故事.您可以定义和打印如下函数:
myFunc = function() local x = 14 end --Defined function print(myFunc) --Printed pointer to function
有没有办法访问已定义函数的主体.我试图整理一个小代码可视化器,并希望用特殊的函数/变量"播种"给定的函数,以允许可视化器将自己"挂钩"到代码中,我需要能够重新定义函数.变量或字符串.
无法在普通Lua中访问给定函数的正文源代码.编译成字节码后,源代码被丢弃.
注意BTW可以在运行时使用类似于负载串的工具定义该函数.
部分解决方案是可能的 - 取决于您实际想要实现的目标.
您可以从调试库获取源代码位置 - 如果启用了调试库并且未从字节码中删除调试符号.之后,您可以加载实际的源文件并从那里提取代码.
您可以使用所需的元数据手动装饰您感兴趣的功能.请注意,Lua中的函数是有效的表键,因此您可以创建函数到元数据表.您可能希望将此表设置为弱键,因此不会阻止GC收集函数.
如果您需要一个分析Lua代码的解决方案,请查看Metalua.