首先需要安装lua,Windows下自然是安装Lua For Windows咯,下载地址:
http://code.google.com/p/luaforwindows/
安装以后它已经包含了luadoc,所以无需我们再去下载,如果非要去下载的话,那么下载地址是: http://luadoc.luaforge.net/ 。
然后,我们需要准备一个批处理文件,叫啥名字无所谓,我是取名叫做buildDoc.bat的,我用doxygen的时候也是叫这个名字的,以下是批处理文件的内容:
有了这个批处理文件,这个时候我们就可以生成lua的文档了,只需要鼠标轻轻一点就可以了。^_^
以下给出一点lua脚本的示例:
-- @class table
是表明其类型是一个表,
-- @name
p_GlobalOptions是表名,
-- @field opt1 字段1
说明第一个字段是什么。
-- @field opt2 字段2
说明第二个字段是什么。
说明参数1;
-- @return 没有返回值哦
说明了返回值
-- @usage test()
这里是给出一个示例代码来;
-- @see p_GlobalOptions
可以生成一个超链接,表明这个方法和p_GlobalOptions是有关,你可以去查看。
其实还可以改改这么写:
@class有三个参数: function, table 和 module。分别表示是:方法,表和模块。
具体文档请参见: http://luadoc.luaforge.net/manual.html
-------------------------------------------------------------------------------------------------------------
来点闲话,最近工作已经放到了使用lua做开发上面去了,没办法,广州这边的游戏公司基本上都是用脚本做大部分事情。
至于为什么要这样倚重脚本,无非就是:出于人员培训的考虑,出于快速开发的考虑……
没有复杂的数据类型,甚至于其实根本不用管数据类型是什么,因为它是一个弱类型的语言……
只有一个数据结构:table,可以做变长数组,可做hash表,甚至用于模拟Class……
你可以不用声明类型,它可以叫做“使用即声明”。你一不小心把名字写错了,解释器还不报错:这是合法的。想要捕获这种错误,还需要一些技巧性的解决方法。
没有像VS那样好用的IDE(因为我自始自终都在用着这个让人惰性化的工具),虽然有UEStudio、EditPlus、NotePad++、SciTe、GVIM、LuaEdit,甚至于Eclipse也可以用,但是,始终不觉得好用。
调试起来也不大方便,不过还好有Decoda这个支持远程调试器的好东西,至少还有的用。
不管怎样,
弱类型有弱类型的好处,实现委托不是那么困难的事情了,也不需要使用像boost:any这样的玩意了。C++中所需要思考的东西一下子不再需要去烦扰了。
不过我却依然快不起来,语言上所要困扰的东西虽然少了许多,但是习惯它总是需要时间的。
而且,融入新团队,沟通,这些开发中的成本始终是存在的,不管用什么编程语言,不管做什么项目,不管在什么公司……
安装以后它已经包含了luadoc,所以无需我们再去下载,如果非要去下载的话,那么下载地址是: http://luadoc.luaforge.net/ 。
然后,我们需要准备一个批处理文件,叫啥名字无所谓,我是取名叫做buildDoc.bat的,我用doxygen的时候也是叫这个名字的,以下是批处理文件的内容:
@echo on
lua.exe "%LUA_DEV%\lua\luadoc_start.lua" -d "Docs" *
pause
它做了什么呢?它调用了lua.exe执行了luadoc_start.lua这个脚本,传入的参数-d "Docs"的意思是生成的文档文件夹(输出路径),如果没有则是生成在批处理文件当前路径。第二个参数是需要生成文档的lua脚本文件列表(输入文件),不过我们可以传入了一个*,它会自动解析生成的,让它遍历当前路径的lua文件以及当前路径下面所有的子文件夹的lua文件。
lua.exe "%LUA_DEV%\lua\luadoc_start.lua" -d "Docs" *
pause
有了这个批处理文件,这个时候我们就可以生成lua的文档了,只需要鼠标轻轻一点就可以了。^_^
以下给出一点lua脚本的示例:
--- 测试用表
-- @ class table
-- @name p_GlobalOptions
-- @field opt1 字段1
-- @field opt2 字段2
local p_GlobalOptions = {
opt1 = nil,
opt2 = nil,
}
这是一个表的简单示例,其中
-- @ class table
-- @name p_GlobalOptions
-- @field opt1 字段1
-- @field opt2 字段2
local p_GlobalOptions = {
opt1 = nil,
opt2 = nil,
}
-- @class table
是表明其类型是一个表,
-- @name
p_GlobalOptions是表名,
-- @field opt1 字段1
说明第一个字段是什么。
-- @field opt2 字段2
说明第二个字段是什么。
--------------------------------------------------------------------------------------
-- @name test
-- @description 嗯。。。这是一个测试方法的方法
-- @param param1 参数1
-- @param param2 参数2
-- @ return 没有返回值哦
-- @usage test()
-- @see p_GlobalOptions
--------------------------------------------------------------------------------------
function test(param1, param2)
end
-- @param param1 参数1
-- @name test
-- @description 嗯。。。这是一个测试方法的方法
-- @param param1 参数1
-- @param param2 参数2
-- @ return 没有返回值哦
-- @usage test()
-- @see p_GlobalOptions
--------------------------------------------------------------------------------------
function test(param1, param2)
end
说明参数1;
-- @return 没有返回值哦
说明了返回值
-- @usage test()
这里是给出一个示例代码来;
-- @see p_GlobalOptions
可以生成一个超链接,表明这个方法和p_GlobalOptions是有关,你可以去查看。
其实还可以改改这么写:
--------------------------------------------------------------------------------------
-- @ class function
-- @name test
--------------------------------------------------------------------------------------
-- @description 嗯。。。这是一个测试方法的方法
-- @param param1 参数1
-- @param param2 参数2
-- @ return 没有返回值哦
-- @usage test()
-- @see p_GlobalOptions
--------------------------------------------------------------------------------------
即,表明其类型是一个function,名字叫做test。
-- @ class function
-- @name test
--------------------------------------------------------------------------------------
-- @description 嗯。。。这是一个测试方法的方法
-- @param param1 参数1
-- @param param2 参数2
-- @ return 没有返回值哦
-- @usage test()
-- @see p_GlobalOptions
--------------------------------------------------------------------------------------
@class有三个参数: function, table 和 module。分别表示是:方法,表和模块。
具体文档请参见: http://luadoc.luaforge.net/manual.html
-------------------------------------------------------------------------------------------------------------
来点闲话,最近工作已经放到了使用lua做开发上面去了,没办法,广州这边的游戏公司基本上都是用脚本做大部分事情。
至于为什么要这样倚重脚本,无非就是:出于人员培训的考虑,出于快速开发的考虑……
没有复杂的数据类型,甚至于其实根本不用管数据类型是什么,因为它是一个弱类型的语言……
只有一个数据结构:table,可以做变长数组,可做hash表,甚至用于模拟Class……
你可以不用声明类型,它可以叫做“使用即声明”。你一不小心把名字写错了,解释器还不报错:这是合法的。想要捕获这种错误,还需要一些技巧性的解决方法。
没有像VS那样好用的IDE(因为我自始自终都在用着这个让人惰性化的工具),虽然有UEStudio、EditPlus、NotePad++、SciTe、GVIM、LuaEdit,甚至于Eclipse也可以用,但是,始终不觉得好用。
调试起来也不大方便,不过还好有Decoda这个支持远程调试器的好东西,至少还有的用。
不管怎样,
弱类型有弱类型的好处,实现委托不是那么困难的事情了,也不需要使用像boost:any这样的玩意了。C++中所需要思考的东西一下子不再需要去烦扰了。
不过我却依然快不起来,语言上所要困扰的东西虽然少了许多,但是习惯它总是需要时间的。
而且,融入新团队,沟通,这些开发中的成本始终是存在的,不管用什么编程语言,不管做什么项目,不管在什么公司……