在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
接触lua有一段时间了,但总觉得编程能力上不去,最近在一边回顾,一边看别人总结的博客,于是整理了一下。只记一些认为需要记录的,最好的学习方式还是看书。此处多谢网络分享的朋友。 【21个关键字】 and break do else else if end false for function if in local nil not orrepeat return then true until while 【8种基础类型】 nil: 空 (可以用来删除一个元素) 【type】用函数type来检测一个变量的类型。 如类型测试: var = 20 print(type(var)) var = "Hello world" print(type(var)) var = print print(type(var)) var = {} print(type(var)) 【string类型】 [[]]来处理转义定义字符串,括号中间可以加 若干个"="号,如 [==[ ... ]==] 下面的语句所表 的是完全相同的字符串: a = [[alo a = [==[ 【连字符】 需要连接两个字符串用连接操作符".."( 类似C语言中的strcat ) eg: print("hello".."world") 【取长度】 "#"获取字符串的长度。 eg: a = "hello world" print(#a) 或string库函数 【table = 数组+映射】 1)数组 ①a = {} a[1]=1 a[2]=5 a[3]="hello" print(a[1],a[2],a[3]) ②a = {1,5,"hello"} print(a[1],a[2],a[3]) 这两种定义方式效果一样。 2)映射 类似于C语言中的map,[]里面的是key值。(数据库的table) ①a= {} a["hello"]=2 a[3]=false print(a.hello,a[3]) ②a={["hello"]=2,[3]=false} print(a.hello,a[3]) 这两种定义方式效果一样。 【逻辑运算符】 and(与) or(或) not(非 ) 【局部变量】 i = 10 -- 全局变量 【控制语句】 1)if...then...else 如: if a>b then else if a>c then else end lua中不支持switch语句,条件判断只有if语句。 2)while 如: while a<5 do a = a + 1 end 3)repeat...until Lua中的repeat语句类似于C语言中的do...while语句,先执行一次再判断条件是否满足。 local i = 0 repeat i = i + 1 print(i..", ") until i>3 --输出为1,2,3,4 【迭代循环】 ①数字for循环 for var = from,end,step do loop-part end 表示从from到end,每次递增step。step参数如果不设置的话默认为1。 注:for循环的参数为表达式或者函数调用时,只会调用一次 eg:倒序输出整数10到1。 for i=10,1,-1 do print(i) end ②泛型for循环,类似于C++中的迭代器(iterator) io.lines用于遍历每行; pairs迭代table元素; ipairs用于迭代数组元素; string.gmatch用于迭代字符串中的单词。 days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"} for k,v in pairs(days) do print(v) end pairs遍历的结果是散列的,随机的。 a = { ["foo"] = 1, [100] = true, [1] = 20, [2] = 30, } for k,v in ipairs(a) do print(k,v) end 编译结果为:1 20 2 30 原因:ipairs只遍历数组,pairs遍历数组+映射。 5)控制语句break与return break 用于退出当前循环(for, repeat, while) ——循环外不可使 return 用来从函数返回结果,当一个函数自然结束,尾部会有 个默认的return。 tip: Lua要求break和return只能出现在block的结尾句
【函数】 函数的目的:封装、抽象 封装是为了隐藏细节
1) 函数定义方法 function func() end func = function() end --注意:end不可以另起一行 以上两种函数定义方法效果一样 2)在Lua语言中函数可以当做一个值赋给变量。 add = function(a,b) --把函数赋给add return a+b end foo = add --把函数赋给foo print(foo(1,5)) Lua的多返回值 function add(a,b) return a+b,a-b end print(add(1,5)) -->结果为6 -4 多变量赋值 a,b = 1,2 a,b = b,a print(a, b) -->2,1 3)函数的参数 Lua中函数的参数可以有任意多个。 function sum (a, b) return a + b end print(sum(10, 20, 30)) ——结果为30,自动把多余的参数30丢弃 传入的参数形参少,那么缺少的形参的值默认为nil function sum (a, b) return a + b end print(sum(10)) ——结果为0,相当于10+nil=10 4)可变参数 function add( ... ) local s = 0 for i,v in ipairs{...} do s = s + v end return s end print(add (1,2,3,4,5)) --运行结果为15 5)闭包函数 闭包函数是指将一个函数写在另一个函数之内,内部函数可以访问外部函数的局部变量。内部函数没有名称,通常也叫匿名函数。 function newCounter() local i = 0 return function() i=i+1 return i end end c1 = newCounter() print(c1()) --> 1 print(c1()) --> 2
|
请发表评论