摘要: 创建模块的基本方法的缺点在于,忘记使用local,很容易就污染全局空间。 “函数环境”是一种有趣的技术,它能够解决上面的问题。就是让模块的主程序块独占一个环境。 这样不仅它的所有函数可以共享这个table,而且它的所有全局变量也都记录在这个table中。还可以将所有的公有函数声明为全局变量。 这样它 阅读全文
posted @ 2016-09-12 19:45 daiker 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 在Lua中创建一个模块最简单的方法是:创建一个table。 并将所有需要导出的函数放入其中,最后返回这个table。 下例中的inv声明为程序块的局部变量,就是将其定义成一个私有的名称: 有的人不喜欢最后的return语句,可以通过下面的方法消除它: require调用加载器时,会把模块名作为第一个 阅读全文
posted @ 2016-09-12 19:03 daiker 阅读(148) 评论(0) 推荐(0) 编辑
摘要: Lua提供了一个名为require的高层函数来加载模块,但这个函数只假设了关于模块的基本概念。 对于require而言,一个模块就是一段定义了一些值(函数或者包含函数的table)的代码。 为了加载一个模块,只需要简单调用require "modname" 。这个函数首先会查找package.loa 阅读全文
posted @ 2016-09-12 18:04 daiker 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 通常,Lua不会设置规则,相反会提供很多强有力的机制来使开发者有能力实现出最适应的规则。 然而,这种方法对于模块就不行了。模块系统的一个主要目标是允许以不同的形式来共享代码。 但若没有一项公共的规则就无法实现这样的共享。 从Lua5.1版本开始,就为模块和包定义了一系列的规则。不统一的实现可能会使程 阅读全文
posted @ 2016-09-12 10:07 daiker 阅读(122) 评论(0) 推荐(0) 编辑