lua这门语言和平时的C,VB类似,但又有很大不同,为了让大家快速可以上手开发,本人写了这篇简短的教程,将一些基础问题讲解,使得大家不需要过多了解lua中复杂的机制,如表、元表等这些概念,就可以进行一些简单的开发。当然,此前你最好有C语言经验
本文编写者:七少月
*******************************************************************************
1.lua的数据类型
空值(nil),布尔(boolean),数字(number),字符串(string),函数(function),用户数据(userdata),线程(thread),表(table)
可见,lua和一般的C语言等的不同,C语言等主流语言数据类型一般都是数据值的类型,而不会包含函数,线程这些。
2.lua的变量
lua的变量也是和C等语言,有截然不同概念。lua是一门动态语言,所以其变量没有定义变量数据类型(如 int a)这个行为,所有变量在没有赋值时都是空值型,其变量类型为赋值时相应进行改变。lua对大小写敏感,这和C是一样的。lua的变量分为全局变量和局域变量(表域可以先不去学习)。凡是没有使用local来定义变量的,都默认是全局变量;反之为局部变量。
3.lua的赋值语句
赋值语句比较简单,也比较相似于C语言,但它可以变量连续赋值,且相互并不影响。
local i
i =3
local a[]
i,a[i] = 4,5
最终,i =4 ,而a[3]=5,可以看出,a[i]是在i=4时之前进行数组中i的赋值
4.lua的控制结构(既可以竖式,也可以横式,为了更加易懂,下面采用竖式)
条件结构
if..then..end语句
if 条件 then if 条件 then
语句组1 语句组1
else elseif 条件
语句组2 语句组2
end end
循环结构
1.while...do..end语句
while 条件 do
语句组
end
2.repeat...until语句
repeat
语句组
until 条件
3.for...do....end语句
for i =e1,e2,e3 do
语句组
end
for语句中,类比C语言,有三个隐形变量,也就是var,limit,step,也就是初始值,终值和步长,步长默认是1.实际等同于以下的whlie语句。
do
local var,limit,step = .......
if not (var and limit and step) then error() end
while (var,limit,step满足的条件) do
语句组
end
end
4.goto语句,和C类似,也是goto label1,也就是goto到标签的用法,但不建议使用,goto往往是死循环。
5.break语句,和C类似,跳出循环
6.return语句,和C类似,但只能用在结束的最后一句,也可以内嵌在块中,但依然要是内嵌块中的最后一句,如do return end语句
5.lua的函数定义与调用
lua的函数定义与C也是类似的,使用return语句返回结果,如果没有return则不返回任何结果,如果函数中不带参数且不返回值,就相当于VB中的过程,C中也没有过程这个概念。
funtion add(a,b)
return a+b
end
在调用时,可以为其形参给予实参,如add(3,4)。
6.lua的转义符号
lua的转义符号包含C中的转义符号,如\n表示换行符号。
7.lua的运算符
lua的运算符和C类似,但也有不同
算术运算符:+ - * \ % ^
强制转换:这里lua和C稍有不同,原因还在前面说过的,lua没有事先定义变量类型的概念,数据类型中也只有一个数字类型,而没有C中浮点数,整型数这些概念。它支持字符串与数字的自动转换。当遇到需要转换时,编译器会自动尝试。当然,字符串的控制最好使用函数库中的string.format()
关系运算符:== < > <= >= ~= 最后一个是不等于,与C的!=不等于不同
逻辑运算符:not and or
字符串连接符: ..
优先级:lua的优先级和C也是不同,不根据运算符是算术还是关系来判断优先级,而根据操作符来判断,具体请看官方手册,总体上还是逻辑运算符>关系运算符>算术运算符
8.lua的字符串与注释
lua的字符串也是使用双引号,如print("我的第一个lua程序"),而注释上,可以使用--,其类似与C的//
8.lua的函数库
lua有很多自带函数库,请查阅官方手册
9.lua的其他
lua中还有很多概念,如表,元表,键值,表域,元方法,函数封包等等,这些与C的距离较远,我们可以在初学时不去理会。这里简单介绍下元方法的使用,通常元方法都是_a()样式,如op1_len,其意思就是调用长度的元方法。
|