在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、注释 “--”为注释一行 “--[[” 开头到 “]]”结尾为注释一段,在注释中“[[”和“]]”是可以嵌套的 二、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> 如果字符串里面有[,]可以使用\转义 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
|
请发表评论