Lua脚本语言入门
一、注释
“--”为注释一行
“--[[” 开头到 “]]”结尾为注释一段,在注释中“[[”和“]]”是可以嵌套的
二、LUA
语句之间使用空格或者分号“;”隔开,如果多个语句写在同一行,建议用分号隔开。
条件控制语句:
if 条件 then ... elseif 条件 then ... else ... end
while循环:
while 条件 do ... end
Repeat循环:
repeat ... until 条件
For循环:
for 变量=初值,终值,步长 do ... end
for 变量1,...,变量N in 表或枚举函数 do ... end
注意,for的循环变量只作用于for语句快,也可以省略步长,默认为1,可以用break来终止一个循环。
语句块:
使用do和end来包裹一个语句块,你可以在函数和语句块中声明局部变量。
赋值语句:
同时给多个变量赋值 a,b,c,d = 1,2,3,4
甚至是 a,b=b,a 方便交换a,b的值
默认情况下变量都是全局的,如果要定义局部变量要使用local说明,local a,b,c=1,2,3 则a,b,c都是局部变量
数值运算:
与C一样的+,-,*,/,还多了一个^阶乘,比如2^3=8
连接两个字符串可以用..运算符"this is a ".."apple"
比较运算符:
<,>,<=,>=,==,~= 这些操作总是返回true或者false
对于Table,function,userdata这些类型的数据只能使用==,~=,表示两者是否引用的同一数据
a={1,2};b = a; print(a == b , a ~= b);--------true,false
a={1,2};b={1,2};print(a == b , a ~= b);--------false,true
逻辑运算:
and,or,not
在Lua中只有false和nil才算作false,其他任何数据都为true,0也是true
and,or的结果不是true,false;而是和运算两数有关,
a and b,a为true则结果为b,a为false则结果为a
a or b,a为true则结果为a,a为false则结果为b
举几个例子:
print(4 and 5);----5
print(nil and 13)----nil
print(false and 13)---false
print(4 or 5)---4
print(false or 5)---5
模拟三目运算x=a?b:c在Lua中可以写成x=a and b or c
x = x or v 等于 if not x then x= v end;
运算符优先级:
^
not (一元运算)
*,/
+,-
.. (字符串连接)
<,>,<=,>=,==,~=
and
or
关键字:
and, break,do,while,break,for,then,end,repeat,for,if,else,elseif,until,not,or,false,nil,local,function,return,true
变量类型:
NIL空值,没有用过的变量,nil既是值有是类型
Boolean 布尔值
Number 数值相当于double
String 字符串,可以包涵“\0”的
Table 关系表
Function 函数类型,所有的函数本身就是一个变量
Userdata用户数据类型,可以是宿主的任意类型,宿主主要是C或C++,比如struct,指针等
Thread 线程类型,其实Lua是没有线程的,但是Lua可以将一个函数分成几部执行
变量定义:
默认变量的范围是全局的,所以在函数或者语句块中要定义局部变量要加local关键字
变量是大小写敏感的
例子:
如果要将一个变量消除可以使用 v=nil,注意小写nil
可以直接赋值一个boolean类型,v=true
字符串使用单引号或双引号赋值,v='this is single';v="there are double",支持与C一样的转义\n \t等
也可以用[[ ]]将字符串括起来,例如:
page = [[<HTML>
<head></head>
</HTML>]]
如果字符串里面有[,]可以使用\转义
Table类型可以理解为一个数组,除了nil都可以做索引,也可以用任意的数据类型做内容,除了nil,用{}括起来就是table了
T1 = {} ---空数组
T1[1] = 10
T1["John"] = {age=27,Gender="male"}
这一句相当于
T1["John"] = {}
T1["John"]["age"]=27
T1["John"]["Gender"]=male
当表的索引是字符串的时候,可以简写为:
T1.John={}
T1.John.age=27
T1.John.Gender=male
或
T1.John{age=27,Gender="male"}
推荐表的赋值写法:
T1 =
{
10, ---相当于[1]=10
[100] = 40,
John=
{
age = 27,
Gender = male
},
20 ---相当于[2]=20
}
需要注意三点,第一,所有元素之间总是用,号隔开;
第二,所有的索引都要用[]括起来,字符串可以不用,也可以用
第三,如果不写索引,默认从1开始递增
Function函数定义很简单,
function add(a,b) --add是函数名,a,b是参数
return a+b
end
注意,return一定要写在end之前,上面的语句相当于:
add = function (a,b) return a+b end
函数接受可变参数使用...来定义,比如
function sun(a,b,...)
取得可变参数在函数中访问arg局部变量得到,他是个表类型
如:sum(1,2,3,4)则,a= 1,b=2,arg={3,4}
函数也可以同时返回多个结果,比如:
function s()
return 1,2,3,4
end
a,b,c,d = s() --相当于a=1,b=2,c=3,d=4
Lua的面向对象特性:
t=
{
age =27,
add = function(self, n) self.age = self.age + n end
}
print(t.age)
t.add(t,10) ---- 可以简写为t:add(10)
print(t.age)
参考手册http://archive.cnblogs.com/a/897304/
一个for的例子:
myData = {}
myData[0] = "foo"
myData[1] = 42
myData["bar"]= "baz"
for key ,value in myData do
print(key .. "=" .. value)
end
结果输出:
0=foo
1=42
bar=baz
- 上一篇 »javascript入门
- 下一篇 »lua脚本在游戏中的应用