【lua的require、dofile、loadfile、loadstring及luamodule机制
-- 假设文件mod.lua的内容是:? local function sayMyName()? function M.sayHello()? return M -- 另一个文件也可以使用mod.lua的函数:? -- require是包含模块的标准做法。? -- 下面的代码是工作的,因为在mod.lua中mod = M:? -- 这是错误的;sayMyName只在mod.lua中存在:? -- require返回的值会被缓存,所以一个文件只会被运行一次,? -- 假设mod2.lua包含代码"print('Hi!')"。? -- dofile与require类似,只是不做缓存:? -- loadfile加载一个lua文件,但是并不允许它。? -- loadstring是loadfile的字符串版本。? 读者可以参考:http://www.cnblogs.com/ghost240/archive/2012/06/20/2556054.html ----------------------------------------------------------------------------------------------------------------------------------------------------- module函数, module "mymodule" <span style="font-size:18px;">local modname = “mymodule” – 定义模块名 local M = {} -- 定义用于返回的模块表 _G[modname] = M -- 将模块表加入到全局变量中 package.loaded[modname] = M -- 将模块表加入到package.loaded中,防止多次加载 setfenv(1,M) -- 将模块表设置为函数的环境表,这使得模块中的所有操作是以在模块表中的,这样定义函数就直接定义在模块表中 </span> http://blog.sina.com.cn/s/blog_5f928b640102v5nt.html这个写的比较明白 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |