第二篇:Lua基础语法,以及实例讲解
1:注释 单行注释 -- 相当于 // 多行注释 --[[ ]] 相当于 /* */ 2:基础知识 2.1 语句之间可以使用 ";" 或者空白隔开(多个语句如果写在同一行的话用分号隔开) 2.2 string 的连接使用 .. 相当于 + ; string的声明使用 双引号或者单引号括起来 2.3 流程控制 条件控制:if 条件 then … elseif 条件 then … else … end While循环:while 条件 do … end Repeat循环:repeat … until 条件 For循环:for 变量 = 初值,终点值,步进 do … end For循环:for 变量1,变量2,… ,变量N in表或枚举函数 do … end --下一篇文章后面参考for循环详解 2.4 语句块使用 do end 相当于 { } 2.5 可以支持同时多赋值语句 a, b, c, d = 1, 2, 3, 4 2.6 变量默认为全局变量,定于局部变量使用local 关键字 2.7 数值运算符 支持乘方运算符号 ^ 例如:2^3 = 8 2.8 比较运算符 ~= 相当于 != 2.9 逻辑运算符 and, or, not 其中,and 和 or 与C语言区别特别大。 在这里,请先记住,在Lua中,只有false和nil才计算为false,其它任何数据都计算为true,0也是true! and 和 or的运算结果不是true和false,而是和它的两个操作数相关。 a and b:如果a为false,则返回a;否则返回b a or b:如果 a 为true,则返回a;否则返回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 在Lua中这是很有用的特性,也是比较令人混洧的特性。 我们可以模拟C语言中的语句:x = a? b : c,在Lua中,可以写成:x = a and b or c。 最有用的语句是: x = x or v,它相当于:if not x then x = v end 。 3.0 关键字 and break do else elseif end false for function if in local nil not or repeat return then true until while 3.1 变量类型 怎么确定一个变量是什么类型的呢?大家可以用type()函数来检查。Lua支持的类型有以下几种: Nil 空值,所有没有使用过的变量,都是nil。nil既是值,又是类型。 Boolean 布尔值 Number 数值,在Lua里,数值相当于C语言的double String 字符串,如果你愿意的话,字符串是可以包含'\0'字符的 Table 关系表类型,这个类型功能比较强大,我们在后面慢慢说。 Function 函数类型,不要怀疑,函数也是一种类型,也就是说,所有的函数,它本身就是一个变量。 Userdata 嗯,这个类型专门用来和Lua的宿主打交道的。宿主通常是用C和C++来编写的,在这种情况下,Userdata可以是宿主的任意数据类型,常用的有Struct和指针。 Thread 线程类型,在Lua中没有真正的线程。Lua中可以将一个函数分成几部份运行。如果感兴趣的话,可以去看看Lua的文档。 三:表类型 Table 3.1 可以使用任意的类型来作为数组的索引 除了nil 3.2 可以使用任意的类型来作为数组的索引 除了nil 3.3 所有的元素使用 , 隔开 3.4 所有索引值都需要使用 [] 括起来,如果是中字符串可以去掉引号和中括号 3.5 如果不写索引,则会被认为是数字序,并自动加1 使用表之前必须先定义 T1 = {} T1[1] = 10 T1["john"] = {Age = 27, Gender = "Male"} 也可以这样 T1["john"] = {} ; T1["john"]["Age"] = 27; T1["john"]["Gender"] = "Male"; 整个表还可以这样定义 T1 { 10, -- 相当于[1] = 10 john { age = 27, Gender = "Male" }, 20 -- 相当于[2] = 20 } 例子: T1 = { 10, John = { name = "hello", age = 10, birthday = '2000-10-10' }, 30 } function printTable(table) if (table~=nil) then for key, var in ipairs(table) do print(key.." , " .. var) end end for key2, var2 in pairs(table) do if type(var2) == 'table' then printTable(var2) else print(key2.." , " .. var2) end end end printTable(T1) 四:方法 Function 4.1:方法也是一个变量,可以支持任意参数使用...来定义 比如 function sum(a, b,...) --可变参数的打印方式1 function sum(a,b,...) print(a..','..b) for var = 1, arg.n do print(arg[var]) end end --可变参数的打印方式2 function sum2(a,b,...) print(a..','..b) for index=1,select("#", ...) do local temp = select(index, ...) print(temp) end end sum2(1,2,3,5,'c') 4.2方法支持多个返回值 --方法支持多个返回值 function returnPara(a,b,...) return a,b,..., a+b+... end print(returnPara(1,2,3,4) --打印如下1 2 3 6