nil 相当于python的null boolean 布尔值 number 表示双精度类型的实浮点数 string 字符串由一对双引号或单引号来表示 使用#str返回字符串长度 function 由 C 或 Lua 编写的函数 thread 表示执行的独立线路,用于执行协同程序 table Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。 使用泛型for循环遍历,如果遇到nil则停止遍历。
#while a=10 while( a < 20 ) do print("a 的值为:", a) a = a+1 end #for for var=exp1,exp2,exp3 do <执行体> end #var从exp1变化到exp2,每次变化以exp3为步长递增var,并执行一次"执行体"。exp3是可选的,如果不指定,默认为1。三个条件如果有计算,只在第一次运行计算一次。 #泛型for for i,v in ipairs(a) do print(v) end # repeat...until repeat statements until( condition ) #无条件执行第一次。
if(0) then print("0 为 true") end #Lua认为false和nil为假,true和非nil为真. 0为真
函数
optional_function_scope function function_name( argument1, argument2, argument3..., argumentn) function_body return result_params_comma_separated end optional_function_scope: 该参数是可选的制定函数是全局函数还是局部函数,未设置该参数默认为全局函数,如果你需要设置函数为局部函数需要使用关键字 local。 function_name: 指定函数名称。 argument1, argument2, argument3..., argumentn: 函数参数,多个参数以逗号隔开,函数也可以不带参数。 function_body: 函数体,函数中需要执行的代码语句块。 result_params_comma_separated: 函数返回值,Lua语言函数可以返回多个值,每个值以逗号隔开。
function average(...) result = 0 local arg={...} for i,v in ipairs(arg) do result = result + v end print("总共传入 " .. #arg .. " 个数") return result/#arg end print("平均值为",average(10,5,3,4,5,6)) #Lua函数可以接受可变数目的参数,和C语言类似在函数参数列表中使用三点(...) 表示函数有可变的参数。 Lua将函数的参数放在一个叫arg的表中,#arg 表示传入参数的个数。
字符串三种表达方式: 单引号,双引号,[[str]] 转义符是 匹配模式 式匹配函数 string.find, string.gmatch, string.gsub, string.match。 你还可以在模式串中使用字符类 除 ^$()%.[]*+-? 外字符都和自身相匹配 (点): 与任何字符配对 %a: 与任何字母配对 %c: 与任何控制符配对(例如 ) %d: 与任何数字配对 %l: 与任何小写字母配对 %p: 与任何标点(punctuation)配对 %s: 与空白字符配对 %u: 与任何大写字母配对 %w: 与任何字母/数字配对 %x: 与任何十六进制数配对 %z: 与任何代表0的字符配对 %x(此处x是非字母非数字字符): 与字符x配对. 主要用来处理表达式中有功能的字符(^$()%.[]*+-?)的配对问题, 例如%%与%配对 [数个字符类]: 与任何[]中包含的字符类配对. 例如[%w_]与任何字母/数字, 或下划线符号(_)配对 [^数个字符类]: 与任何不包含在[]中的字符类配对. 例如[^%s]与任何非空白字符配对 当上述的字符类用大写书写时, 表示与非此字符类的任何字符配对. 例如, %S表示与任何非空白字符配对.例如,'%A'非字母的字符,其中%作为转义符 单个字符类匹配该类别中任意单个字符; 单个字符类跟一个 '*', 将匹配零或多个该类的字符。 这个条目总是匹配尽可能长的串; 单个字符类跟一个 '+', 将匹配一或更多个该类的字符。 这个条目总是匹配尽可能长的串; 单个字符类跟一个 '-', 将匹配零或更多个该类的字符。 和 '*' 不同, 这个条目总是匹配尽可能短的串; 单个字符类跟一个 '?', 将匹配零或一个该类的字符。 只要有可能,它会匹配一个; %n, 这里的 n 可以从 1 到 9; 这个条目匹配一个等于 n 号捕获物(后面有描述)的子串。 %bxy, 这里的 x 和 y 是两个明确的字符; 这个条目匹配以 x 开始 y 结束, 且其中 x 和 y 保持 平衡 的字符串。 意思是,如果从左到右读这个字符串,对每次读到一个 x 就 +1 ,读到一个 y 就 -1, 最终结束处的那个 y 是第一个记数到 0 的 y。 举个例子,条目 %b() 可以匹配到括号平衡的表达式。 %f[set], 指 边境模式; 这个条目会匹配到一个位于 set 内某个字符之前的一个空串, 且这个位置的前一个字符不属于 set 。 集合 set 的含义如前面所述。 匹配出的那个空串之开始和结束点的计算就看成该处有个字符 '