Lua 随记

Lua 中的模块功能

在用Lua 处理游戏中的UI界面时,一个UI界面对应一个Lua文件时,当这个UI界面处理的功能过多时,会导致一个lua文件中代码过多,这时可通过Lua中模块的功能来优化,直接使用require("model_name")来载入,载入的文件后缀是lua,也可以添加文件的路径,如require("A/B/model_name").
在使用过程中会遇到 当收到服务器消息用Lua来处理时,一般会将处理消息的功能函数分成另外一个模块,如果每次收到消息都要require会不会产生问题?require函数载入同样的Lua文件时,只有第一次的时候回去执行,会面相同的都不执行,所以当被require的文件中有变量初始问题的,使用require不用担心.
如果想要每次都要执行需要使用dofile()函数;如果你要载入后不执行,需要时再执行时 可以使用loadfile()函数。
     如 local hello = loadfile("hello")
          ......
          hello()
 
 loadfile("hello")后hello文件并不执行,当执行hello()时才真的执行。
以下引用酷壳中的例子:
*********************************************************
假设我们有一个文件叫mymod.lua,内容如下:
文件名:mymod.lua
1
2
3
4
5
6
7
8
9
10
11
local HaosModel = {}
 
local function getname()
    return "Hao Chen"
end
 
function HaosModel.Greeting()
    print("Hello, My name is "..getname())
end
 
return HaosModel

于是我们可以这样使用:

1
2
local hao_model = require("mymod")
hao_model.Greeting()

其实,require干的事就如下:(所以你知道为什么我们的模块文件要写成那样了)

1
2
3
local hao_model = (function ()
  --mymod.lua文件的内容--
end)()
 
*********************************************************

Lua 随记

上一篇:test


下一篇:“无法从http://XXX/XXX.svc?wsdl获取元数据”错误的解决方法