首页 > 其他 > 详细

Lua 随记

时间:2014-01-22 16:54:50      阅读:359      评论:0      收藏:0      [点我收藏+]

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 随记

原文:http://www.cnblogs.com/TuringApple/p/3529553.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!