在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Lua学习指南:http://www.lua.org/manual/ 首先我们要明确的一点是:在Lua中,除了关键字外一切都是变量。 可以查看这个地址:http://www.lua.org/manual/5.1/manual.html#2.1 关于分号语句的最后可以用分号";"表示结束,也可以不写。 而对于一行有多个语句的情况下,语句之间可以用分号";"隔开,也可以用空白隔开。一般来说,建议总是用分号隔开。 使用注释单行注释使用“--”即可,以后的内容都会被当做注释; 多行注释以“--[[”开始,以“]]”结束。 变量声明由于是动态类型,所以变量声明时不需要声明类型,但是一定要进行赋值,如果希望是空类型,可以赋值nil,如下: 1 num = 100--数字100 2 str = "abc"--字符串abc 3 obj = nil--空类型 注意在Lua中所有的变量和关键字都是大小写敏感的。 赋值可以一次对多个变量赋值,规则:如果等号(“=”)右边多了,则舍弃,左边多了,则赋值为空(nil) 。 表达式 a,b=b,a表示a和b的值交换,类型不一样照样可以交换。 1 a, b, c = 100, "abc" 2 print(a, b, c)--100 abc nil 3 4 a, b = b, a 5 print(a, b, c)--abc 100 nil 类型我们看看Lua内置的基本数据类型都有哪些:
接下来的笔记会着重介绍这些核心的基本数据类型。 而判断变量究竟是什么类型依靠的是他的值,我们看看下面的例子: 1 num = 100 2 str = "abc" 3 obj = nil 4 func = print 5 6 print(type(num))--number 7 print(type(str))--string 8 print(type(obj))--nil 9 print(type(func))--function 10 11 func = str 12 13 print(type(func))--string 全局和局部默认声明的变量都是全局变量,表示可以在全局范围内进行访问,而局部变量则是在声明之前添加local关键字,如下: 1 local num 2 local str = "abc" 3 4 print(num)--nil 5 print(str)--abc 全局变量声明时必须赋值,而局部变量则不需要。 块do...end可以声明一个程序块,局部变量的生命周期在自己的程序块和子程序块中: 1 function main() 2 do 3 local num = 100 4 print(1, num)--1 100 5 do 6 print(2, num)--2 100 7 end 8 end 9 print(3, num)--3 nil 10 end 11 12 main() 运算符算术运算符包含“+”、“-”、“*”、“/”、“%”等运算符,但是要注意不支持自增自减运算符: 1 num = 10 2 --下面的写法都不支持, --直接变注释了都 3 num++ 4 ++num 5 num-- 6 --num 7 --正确的写法如下 8 num = num + 1 9 num = num - 1 同时简写的形式也不支持: 1 num = 10 2 --简写是不支持的 3 num *= 5 4 --正确的写法如下 5 num = num * 5 取余运算支持小数,因为number类型是以double形式存在的: 1 num = 3.14 2 num = num % 1 3 print(num)--0.14 关系运算符
需要注意的是,table等引用类型是使用地址来进行判断的: 1 num1 = 10 2 num2 = 10 3 print(num1 == num2)--true 4 5 str1 = "abc" 6 str2 = "abc" 7 print(str1 == str2)--true 8 9 table1 = {1, 2, 3} 10 table2 = {1, 2, 3} 11 print(table1 == table2)--false 逻辑运算符
我们可以巧用逻辑运算符来实现C中的三元运算符: 1 --C 语言的写法 2 --d = a ? b : c 3 --Lua 的写法 4 d = (a and b) or c 控制结构if then条件判断语句,我们直接上个例子: 1 num = math.random() 2 print(num) 3 4 if num <= 0.33 then 5 print("A") 6 elseif num <= 0.66 then 7 print("B") 8 else 9 print("C") 10 end while和repeat条件循环语句,while是先判断再循环,repeat是先循环再判断,例子如下: 1 num = 10 2 3 --while 的条件是如果为真则继续循环 4 while num ~= 0 do 5 num = num - 1 6 print(num) 7 end 8 9 num = 10 10 11 --repeat 的条件是如果为真则退出循环 12 repeat 13 num = num - 1 14 print(num) 15 until num == 0 for循环语句; 1 --步长默认为 1 2 for i = 0, 10 do 3 print(i) 4 end 5 6 --指定步长为 2 7 for i = 0, 10, 2 do 8 print(i) 9 end foreach迭代遍历语句,写法如下: 1 days = {"Suanday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"} 2 3 --i 表示索引, v 表示值 4 for i,v in ipairs(days) do 5 print(i, v) 6 end break和return用法和C中的一致,break用于跳出循环,而return用于跳出函数。 不支持的switch、case和continueLua中不支持switch-case语句,我们可以使用if elseif来代替; Lua中不支持continue语句,参考下面的文件来实现:http://www.ogeek.net/article/59099.htm Lua在5.2的版本中加入了goto语句,可以用来实现continue的效果。 |
请发表评论