lua脚本基础
1.界面的编写很大一部分可以通过脚本来实现, 可以修改加脚本而不必重新编译程序, 可以节省界面设计的时间
2.lua脚本设计目的是为了嵌入应用程序中, 为应用程序提供灵活的扩展功能
3.lua脚本可以被c/c++调用, 也可以调用c/c++的函数, 也可以代替xml, ini等文件, 容易理解和维护
4.lua由标准c编写而成, 解释器不过200k, 在目前所有脚本引擎中, lua的速度最快, 是作为嵌入式脚本的最佳选择
5.lua_open() 返回一个指向lua解释器的一个指针
6.luaL_openlibs() 装载lua库, 提供了一些简单的函数, 如print
7.luaL_dofile() 执行脚本
8.lua_close() 关闭lua
9.相关头文件:
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
#pragma comment(lib, "lua5.1.lib") //5.1版本的lua库
lua_State* L; //lua解释器指针
L = lua_open(); //初始化lua
luaL_openlibs(L); //载入lua基本库
luaL_dofile(L, "test.lua"); //执行脚本
lua_close(L); //清除lua
10.解释器加载lua脚本程序库: dofile("test.lua")
然后就可以执行test.lua里面的函数了
11.lua_getglobal(L, "add"); //lua库的add全局函数
luapushnumber(L, x); //将x压栈
luapushnumber(L, y); //将y压栈
lua_call(L, 2, 1); //调用前面的add函数, 2个参数, 1个返回值
int ret = (int)lua_tonumber(L, -1); //取得返回值
lua_pop(L, 1); //弹出栈
12.lua的注释:
单行注释: 从"--"到行末
多行注释: 从"--[["到"]]", 当重新启用这段代码时
技巧:
--[[
语句
--]]
这样注释后, 只要在"--[["前加一个"-", 那么语句就可以执行了
13.lua io输入:
a = io.read("*number") --read a number
14.lua中唯一一种数据结构 table
15.进入lua交互模式, 执行os.exit()时退出交互模式
C:\>lua
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> os.exit()
C:\>
16.用lua -i参数来执行lua解释器时, 运行完lua程序后将进入交互式模式
-i对于调试收工测试尤为有用
用lua -e参数, 可以直接在命令行中输入代码:
C:\>lua -e "print(math.sin(12))"
-0.53657291800043
用lua -l 可以加载库文件:
lua -i -l a -e "x = 10" --命令行下加载库a, 执行x=10操作, 执行完后进入交互模式
只要定义了一个名为"_PROMPT"的全局变量, 解释器就会用它的值作为交互模式的命令提示符
lua -i -e "_PROMPT=' lua>'"
17.lua的保留字 --关键字:
and break do else elseif
end false for function if
repeat return then true until
while
18.全局变量不需要声明, 只需要将一个值赋予一个全局变量就可以创建了, 在lua中访问一个未初始化的变量不会出错, 结果是一个nil值
要删除一个变量, 可以把这个变量赋值为nil
19.在交互模式中, 如果要打印任何表达式的值, 可以用等号开头, 并跟随一个表达式:
= math.sin(3)
20.lua有8中基础的类型
nil(空) boolean(布尔) number(数字) string(字符串)
userdata(自定义类型) function(函数) thread(线程)
table(表)
函数与type可以根据一个值返回其类型的名称