注释
单行注释 —
多行注释 —[[ —]] //lua多行注释可以嵌套
数据类型
数值类型
保存实数,包括整数和浮点数 整数可以是10进制和16进制 0x开头代表16进制 浮点数必须包含一个数字 一个小数点或者e(E)
布尔类型
只有两种值:true false
字符串类型
字符串是若干封装在双括号或者单括号内的字符
自定义类型
………
函数类型
lua中函数是一种类型 可以赋值给一个变量,也可以传递给别的函数当参数
线程类型
表示一个线程,线程可以同时执行多个,每个线程拥有独立的栈 局部变量和指令指针
表类型
一组关联数组类型用{}表示
nil
。。。。
type函数返回变量或者数值的类型
用print代替c 中
类型转换
tostring()//只能转换布尔类型和数值类型
tonumber//将非数字的原始值转换成为数字
tonumber(“10”)
tonumber(“AF”,16);//转换成为16进制数
关系运算符
== ~=
> < >= <=
逻辑运算符
and or not 对应C语言中(& | ~)
控制语句
if …then….end if ….then ….else ….end if…then….else if …then ………….else …end
while …do ….end repeat …. until ….. 相当于C语言中(do…while) for var = exp1,exp2,exp3 do … end for i,v in ipairs(a) do …. end (用来方便便利数组table类型)
break return
js中的对象 但是是用=链接 不是用:) {}
字典
访问 [] . (tabel[id] table.id) 遍历 for k,v inpairs(table)do …end
数组
没有键值对 可用ipairs() pairs() 典型for循环遍历
单引号或者双引号括起来的值 字符串之间用双点..拼接起来 “hallo”..”world”
string.len(str);//获得str的长度
string.sub(s,n,m);//截取字符串 结果是n-m的字符串 //lua中字符串从1开始索引
string.lower(s)//big->small
string.upper(s)//small->big
string.rep(s,n)//重复拼接三次
string.reverse(s)//翻转
string.find(s,sub)//返回两个值 第一个是 开始位置 第二个是结束位置
string.format(“format”,…)//格式化字符串 和pringf中的格式类似
函数
定义函数 function 函数名 (参数列表){ …[return 返回值]}
变量作用域 貌似和C语言差不多
多重返回值 lua 函数可以返回多个值
闭包函数(闭包实现条件 支持函数类型,能够将函数作为参数或者返回值传递 ,支持函数嵌套)lua可以实现闭包
嵌套函数 作用域在外函数的内部
//lua 并没有提供类的定义能力 但是可以把表类型变量当成对象使用
lua中的对象 function 类名.方法(形参列表){…}end //不自带self function 类名:方法(形参列表){…}end//自带self
类的实现
setmetatable(table,self);//把self当做元表给table对象
self.__index = self;//表示首先在当前对象查找,如果对象没有就回到self(代表的table查找);