这里重点总结一下lua基础,几个简单的点,记录下来,方便以后查看,不是很详细,稍微概括了一下。也希望可以帮到lua初学者。
Lua简介:
Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的 函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本, 也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解 和维护。
Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上 都可以编译,运行。一个完整的Lua解释器不过200k,在目前所有脚本引 擎中,Lua的速度是最快的。这一切 都决定了Lua是作为嵌入式脚本的最 佳选择。
一、变量
lua中变量的命名规则和C语言中一样:字母数字下划线,不能以数字开头,区分大小写,不能是关键字。(这估计都顺嘴就出来了)
变量的赋值规则和C语言,C++里不是很一样,需要注意以下两点:
如果变量的个数小于值的个数,用nil补充。(下面的数据类型中会详细介绍)
如果变量的个数大于值的个数,则多余的值则将被忽略。
Lua中的变量也分为全局变量和局部变量
全局变量:a = 5;
局部变量:local a = 5;
二、数据类型
lua中的数据类型和C语言中的数据类型不太一样,C语言中有多种数据类型,比如数字就有int,short,long,float,double还有枚举类型等等好多,但是在Lua语言里,数据类型只有八种:number, string, nil, bool, function, table, userdate, thread (userdate和thread在开发中不常用,所以下面就不做过多介绍了)
number:指任意实数。包括了 int,short,long,float,double。。。而且number如果有小数,除不尽的情况下,不只是精确到小数点后八位。
string:这个和C#里有一定区别,在C#里,对一个字符串重新赋值,是重新复制一块空间,进行赋值,原字符串所占空间不销毁。但是在Lua里面,就是直接在这块空间上改写字符串的内容。
数字和字符串之间的转换:
将数字转换成字符串,可以强转,用tostring(),或者隐式转换(10 .. "Mumu"),需要注意,数字后面必须有空格,不然系统就默认第一个点为小数点
字符串转换为数字,用tonumber(),但是一定要保证字符串是纯数字,不然编译错误,(不能通过ascll码转换)。
nil:类似于C中的null,也可以用来对变量的删除操作
bool:这个和其他语言也有很大不一样,C语言中是0或者false为假,其余都为真,而在Lua语言里面,只有nil或者false为假,其余为真,包括0,这个概念一定要记住,不要和其他语言混淆。
function:方法,使用function需要注意,必须先声明,后调用,否则报错。而且可以有多个返回值。
table:表,相当于数组、字典、列表...以键值对形式存储,索引值从一开始递增一
和数组一样,有两种初始化方式:
方式一:先定义一个空表,然后初始化。
tab = { },
tab[1] = "Mumu"
tab["age"] = "15"
方式二:定义的同时初始化
tab = {"Mumu",age = 15}
遍历输出表中元素
这时有两种遍历方式。第一种:
for i,v in ipairs(tab) do print(i,v) end
输出结果为
1 Mumo [Finished in 0.1s]
第二种:
for k,v in pairs(tab) do print(k,v) end
输出结果为:
1 Mumo name 15 [Finished in 0.1s]
由此可以看出,ipairs只能遍历索引为整数的元素,pairs可以遍历表中所有元素。
三、运算符
Lua中的运算符有,算术运算符,关系运算符,逻辑运算符
算术运算符:+ - * / = % ...
关系运算符:> < >= <= == ~= (Lua中的不等于是~=)
逻辑运算符:and or not (相当于C语言中的&& || !)
and:当表达式一位真的时候 返回表达式二的值,当表达式一为假的时候,返回表达式一的值
or:当表达式一为真的时候,返回表达式一的值,当表达式一为假的时候,返回表达式二的值
not:取反,值为true或者false
四、语句
语句分为:
赋值语句,条件语句(没有switch),循环语句
条件语句:if ... then end
循环语句: for ... do ... end while ... do ... end repeat... until....end
来源:https://www.cnblogs.com/1217224194-jiang/p/6866911.html