Lua module机制分析

Lua module机制分析,第1张

概述  Lua中的模块(module)机制有点类似于C语言的动态库,可以将一些公共的代码放在模块中,以API的形式提供给Lua应用脚本使用。使用模块或许还可以做成像Android的Application Frameworks,建立一种新的应用程序编程模型,只是猜想。 模块最简单的使用方式: require “os”os.clock()  table Lua语言共有8中数据类型,其中table(表)

 

Lua中的模块(module)机制有点类似于C语言的动态库,可以将一些公共的代码放在模块中,以API的形式提供给Lua应用脚本使用。使用模块或许还可以做成像AndroIDApplication Frameworks,建立一种新的应用程序编程模型,只是猜想。

模块最简单的使用方式:

 

table

Lua语言共有8中数据类型,其中table()类型实现了“关联数组(associative array)”。table中可以保存各种数据类型。和table关联的Metatable,它定义了表的 *** 作的一些行为,比如: 使用+ *** 作时,会去查找Metatable的属性__add,有的话执行。

function

functionLua8中基本类型之一,和其它类型一样可以作为值传递。和function有关联的表是环境表(environment),可以认为是function的执行环境。可以通过setfenv()getfenv()来设置和获取函数的环境表。函数中对于全局的 *** 作,比如:定义全局变量等;就是在这个表中进行的。多个函数可以共享一个表

require

当使用require加载一个模块时,实际上做了如下的事情:

在表package.loaded中查找模块是否存在,有的话就返回该值。可以使用如下函数输出表中的内容

 

package.loaded中的内容如下,其中包含了一些默认加载的库和全局表_G

 

为模块查找加载器(loader),查询package.preload,通常为空

加载Lua文件使用loadfile函数。loadfile会将文件当作函数来加载,require会将模块名作为参数传给该函数。若有返回值则将返回值放入表package.loaded中。若没有则返回表package.loaded中的值。

module

当在模块文件中使用module函数的时候,如下所示;

 

实际上等同于以下的语句:

 

通过module(),可以方便的编写模块中的内容。

 

测试环境

Lua for Windows IDE

参考资料

Lua 5.1 Reference Manual

http://www.lua.org/manual/5.1/

Programming in Lua (first edition)

http://www.lua.org/pil/

总结

以上是内存溢出为你收集整理的Lua module机制分析全部内容,希望文章能够帮你解决Lua module机制分析所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1268263.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存