lua 一种脚本语言,平均效率高,可以被c 、c++调用,也可以调用c或者c++程序;

lua与c或c++是通过一个栈来交换数据的,栈的默认大小是20(单位是什么不知道),栈的计数可以从栈顶开始,也可以从栈底开始。

从栈顶以-1开始 向下依次减小,从栈底以1 开始,向栈顶依次增大。可以通过

lua_gettop 函数获取栈里面元素的数目,实际上是获取下一个元素的index

下面介绍一些基础的语法:

变量不需要声明,直接赋值使用即可;

变量8个基本类型:

nil:这种类型的数据只有一个值 nil,删除一个变量  将该变量赋值为nil即可。

boolean  只有两个取值 true和false  不过,值得注意的是 任何值都可以作为条件,但只有false 和nil为假,其他都为真。0亦为真

number  浮点型

string 字符串,值得注意的是 lua中的字符串变量是不可以修改的  lua可以包含很长的字符串,甚至是一本书也可以放在一个string变量里

lua会自动将string和number之间进行转换,转换为期望的数值,eg:print("10+1")   输出:10+1   a="10"+1  print(a)  输出11

function  在lua里,函数也是一种数据类型,并且可以存储在一个变量中,作为变量使用  例如:作为函数的参数。或者是函数的返回值

userdata

threads

table

操作运算符:==   ~=

userdata  threads table  对于这三种数据,是通过引用比较的,当且仅当是同一个对象时,判定相等。否则判定不等。

两个变量数据类型不同,则判定为不等。另外对应于这三种数据,赋值操作实际上并没有创建新的对象,只是相当于一个引用 eg:

a={}

a.x=1  a.y=1

c=a

此时  c==a成立

特别需要注意的是and  or运算符:

 这两个运算符的返回值不是 true 和 false 而是连接的操作数 eg:

a and b  如果a为false  返回a,否则 返回b

a or b   如果a为true 返回a  否则 返回b

C语言中的 a?b:c  等价于 (a and b) or c

 

下面介绍非常强大的数据类型  table:

初始化:

days={"monday", "tuesday","sunday"}

可以通过days[1]  访问monday   注意索引  从1开始

也可以按照如下方式初始化:

a={x=1,y=2}  等价于 a={}; a.x=1;  a.y=2;

 

上面介绍的都是全局变量,下面介绍局部变量:

主要需要注意的是局部变量的作用范围,一般只在chunk中 或者是 do  end(相当于C语言中的{})中;

建议使用局部变量,优点有二:1、访问速度快      2、避免变量命名冲突

使用do   end是很好的控制局部变量作用范围的一种方式

下面说控制结构:

 repeate

  ……

until  condition     --注意,当condition为false时,继续执行,true时 停止执行

 

for 循环  

for i=start,end do

  loop_part

edn

start 是起始值,end是终止值  值得注意的是  i是局部变量,出循环后就失效了