First step in lua 2 - [转]

来源:互联网 发布:手机传奇辅助软件 编辑:程序博客网 时间:2024/05/17 00:04

Lua的栈(译)

   从lua传递数据到c/c++,和从c/c++传递数据到lua都是通过lua的栈。它是一个基本的交互通道。所以,当调用一个函数,这个函数就被放到栈上,然后第一个参数被放到栈上,以此类推。它并不是一个传统意义上的栈,在这个栈上的有效操作就是push和pop。而函数在栈上也是一些合法的特殊元素。所以,就像前面说过的一样,它并不是一个真正的栈,但是我们现在可以把它看成一个栈。在栈中操作一个元素都是通过索引。索引可以是正,也可以是负。lua的文档是这样描述索引的: 
   正的索引代表它在栈中的绝对位置(起始于1,而不像c中起始于0);一个负的索引代表它从栈顶的偏移。如果栈有n个元素,索引1代表第一个元素(这是说,第一个被push入栈的元素),而索引n代表随后一个元素;索引-1也代表最后一个元素(这是说,在栈顶的元素),而索引-n代表第一个元素。我们说如果索引位于1和栈顶之间(这是说,(1 <= abs(index) <= top)),那么这个索引就是有效的。 
   有一些成组的类似于lua_toXXX的额外函数来操作lua的栈。