当前位置:  开发笔记 > 编程语言 > 正文

使用Lua访问函数体

如何解决《使用Lua访问函数体》经验,为你挑选了1个好方法。

我要回到这里的基础知识,但在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

有没有办法访问已定义函数的主体.我试图整理一个小代码可视化器,并希望用特殊的函数/变量"播种"给定的函数,以允许可视化器将自己"挂钩"到代码中,我需要能够重新定义函数.变量或字符串.



1> Alexander Gl..:

无法在普通Lua中访问给定函数的正文源代码.编译成字节码后,源代码被丢弃.

注意BTW可以在运行时使用类似于负载串的工具定义该函数.

部分解决方案是可能的 - 取决于您实际想要实现的目标.

您可以从调试库获取源代码位置 - 如果启用了调试库并且未从字节码中删除调试符号.之后,您可以加载实际的源文件并从那里提取代码.

您可以使用所需的元数据手动装饰您感兴趣的功能.请注意,Lua中的函数是有效的表键,因此您可以创建函数到元数据表.您可能希望将此表设置为弱键,因此不会阻止GC收集函数.

如果您需要一个分析Lua代码的解决方案,请查看Metalua.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有