摘要:
协同程序 协同程序(coroutine)与多线程情况下的线程比较类似:有自己的堆栈,自己的局部变量,有自己的指令指针,但是和其他协同程序共享全局变量等很多信息。线程和协同程序的主要不同在于:在多处理器情况下,从概念上来讲多线程程序同时运行多个线程;而协同程序是通过协作来完成,在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只有在明确的被要求挂起的时候才会被挂起。 Lua通... 阅读全文
摘要:
编译·运行·调试 虽然我们把Lua当作解释型语言,但是Lua会首先把代码预编译成中间码然后再执行(很多解释型语言都是这么做的)。在解释型语言中存在编译阶段听起来不合适,然而,解释型语言的特征不在于他们是否被编译,而是编译器是语言运行时的一部分,所以,执行编译产生的中间码速度会更快。我们可以说函数dofile的存在就是说明可以将Lua作为一种解释型语言被调用。 Reguire函数 C P... 阅读全文
摘要:
迭代器与范型for 迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素。在Lua中我们常常使用函数来描述迭代器,每次调用该函数就返回集合的下一个元素。 迭代器需要保留上一次成功调用的状态和下一次成功调用的状态,也就是他知道来自于哪里和将要前往哪里。闭包提供的机制可以很容易实现这个任务。记住:闭包是一个内部函数,它可以访问一个或者多个外部函数的外部局部变量。每次闭包的成功调用... 阅读全文
摘要:
函数 函数有两种用途:1.完成指定的任务,这种情况下函数作为调用语句使用;2.计算并返回值,这种情况下函数作为赋值语句的表达式使用。 语法: function func_name (arguments-list) statements-list; end; 多个返回值 特殊函数unpack,接受一个数组作为输入参数,返回数组的所有元素。u... 阅读全文
摘要:
基本语法 赋值语句、控制结构语句、函数调用等。 多变量赋值、局部变量声明。 a. 变量个数>值的个数按变量个数补足nil b. 变量个数<值的个数多余的值会被忽略 使用local创建一个局部变量,与全局变量不同,局部变量只在被声明的那个代码块内有效。代码块:指一个控制结构内,一个函数体,或者一个chunk(变量被声明的那个文件或者文本串)。 控制结构语句... 阅读全文
摘要:
表达式 包括数字常量、字符串常量、变量、一元和二元运算符、函数调用。还可以是非传统的函数定义和表结构。 算术运算符 二元运算符:+-*/^ 一元运算符:-(负值) 关系运算符 > < <= >= == ~= nil只和它自己相等。Lua通过引用比较tables、userdata、functions,即两者表示同一个对象时相等。 逻辑运... 阅读全文
摘要:
-摘自Lua 编程 Lua 学习 典型语句: print("Hello World") if n==0 then print(n) end 保留字:and break do end false for in local nil repeat return then while else elseif function if not or true until ... 阅读全文