注释

单行注释 —

多行注释 —[[ —]]  //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查找);