lua
 1.注释
 单行注释:--
 段落注释:--[[ ###### ]] (lua5.1中,中括号中间是可以加若干个“ = ”,eg:[==[ ...  ]==])
 2.控制语句
 if条件then...else..end  
 while条件do...end   
 for 变量do...end   
 for a,b in mylist do print(a,b) end
 3.语句块
 语句块在C中使用{},在lua中,用do和end括起来 eg:do print("hello") end
 4.赋值语句
 默认情况下,变量总是认为是全局的,假如需要定义局部变量,则在第一次赋值的时候,需要用local说明,eg:local a = 1  --a是局部变量
 5.数值运算
 支持 + - * /,但是lua还多了一个乘方运算 ^, eg: 2^3 结果为8
 链接两个字符串,用“ .. ” eg: "This a" .. "string"   --等于“This a string”
 6.比较符号
 == 等于,~= 不等于 
 eg:
 a={1,2}
 b=a
 print(a==b,a~=b)  --输出 ture,false
 6.逻辑运算
 and,or,not
 在lua中,只有false和nil才计算为false,其他任何数据都计算为true,0也是true
 a and b :如果a 为false,则返回a,否则返回b  eg:print(4 and 5)  --输出 5  print(nil and 5)--输出 nil
 a or b :如果 a为true,则返回a,否则返回b     eg:print(4 or 5)--输出 4  print(false or 5)--输出5
 注意:
 C语言中的语句:x=a?b:c 在lua中,可以写为:x=a and b or c
 x = x or v 相当于: if not x then x = v end
 运算优先级,从低到高顺序如下:
 or 
 and
 <  >  <=  >=  ~=  ==
 ..(字符串连接)
 + -
 * / %
 not #(lua5.1 取长度运算符)  -(一元运算)
 ^
 和C语言一样,括号可以改变优先级
 7.关键字
 and  break do else elseif end false for function if in local nil not or repeat return then true until while
 8.变量类型
 用type()函数来检查变量类型,lua支持类型有以下几种:
 Nil:              空值,所有没有使用过的变量,都是nil,nil既是值,又是类型
 Boolean:  布尔值,只有两个有效值:true和false
 Number:数值,在lua里,数值相当于C语言的double
 String:     字符串,字符串可以包含“\0”字符的(和C语言总是以"\0"结尾是不一样的)
 Table :     关系表类型
 Function:  函数类型
 Userdata: 这个是用来和lua的宿主打交道,宿主通常是为C和C++来编写的,这种情况下,Userdata可以是宿主的任意数据类型,常用的有Struct和指针
 Thread:线程类型,在lua中没有真正的线程,lua中可以将一个函数分成几部分运行。
 9.变量的定义
 lua中,不管在什么地方使用变量,都不需要声明,并且所有的这些变量总是全局变量,除非我们在前面加上"local",区分大小写 “=”操作就是用来赋值的
 a.Nil
 没有使用过的变量的值,都是Nil。将一个变量清除时,可以直接赋值nil  eg:var1 = nil  --nil一定要小写
 b.Boolean
 布尔值有两种:true和false。
 c.Number
 在lua中,是没有整数类型的
 d.String
 字符串,在lua中最通用的方法是用单引号或双引号来括起来一个字符串,它也支持一些转义字符,
 e.Table
 关系表类型,
 第一,所有元素之间,总是用逗号“,”隔开
 第二,所有索引值需要用[]括起来,如果时字符串,还可以去掉引号和中括号
 第三,如果不写索引,则索引就会被认为是数字,并按顺序自动从1往后编
 f.Function
 在lua中,
 function add(a,b)  --add是函数名字,a和b是参数名字
 return a+b                --return 用来返回函数的运行结果
 end
 注意:
 return语言一定要写在end之前。假如我们非要在中间放上一句return,那么就应该要写成:do return end