Lua 通过特定算法的垃圾回收机制实现自动内存管理。由于自动内存管理机制的存在,作为程序开发人员:不需要关心对象的内存分配问题。不再使用对象时,除了将引用它的变量设为 nil,不需要主动释放对象。Lua 的垃圾回收器会不断运行去收集不再被 Lua 程序访问的对象。所有的对象,包括表、userdata、函数、线程、字符串等都由自动内存管理机制管理它们空间的分配和释放。
Lua 提供一个调试库,这个库中提供了创建自己的调试器所需的所有原语函数。虽然,Lua 没有内置调试器,但是开发者们为 Lua 开发了许多的开源调试器。 Lua 调试库包括的函数如下表所示。S.N. 方法和描述 1 debug():进入交互式调试模式,在此模式下用户可以用其它函数查看变量的值。 2 getfenv(object):返回对象的环境。
为什么需要错误处理机制在真实的系统中程序往往非常复杂,它们经常涉及到文件操作、数据库事务操作或网络服务调用等,这个时候错误处理就显得非常重要。不关注错误处理可能在处理诸如涉密或金融交易这些业务时造成重大的损失。无论什么时候,程序开发都要求小心地做好错误处理工作。
Lua 的 IO 库用于读取或操作文件。Lua IO 库提供两类文件操作,它们分别是隐式文件描述符(implict file descriptors)和显式文件描述符(explicit file descriptors)。在接下来的例子的,我们会用到一个示例文件 test.lua,文件内容如下: -- sample test.lua-- sample2 test.lua简单的打开文件操作可以用如下的语句完成。 file = io.
概述协程具有协同的性质,它允许两个或多个方法以某种可控的方式协同工作。在任何一个时刻,都只有一个协程在运行,只有当正在运行的协程主动挂起时它的执行才会被挂起(暂停)。 上面的定义可能看上去比较模糊。接下来让我讲得很清楚一点,假设我们有两个方法,一个是主程序方法,另一个是一个协程。当我们使用 resume 函数调用一个协程时,协程才开始执行。
正如其名,元表也是表。不过,将元表与表相关联后,我们就可以通过设置元表的键和相关方法来改变表的行为。元方法的功能十分强大,使用元方法可以实现很多的功能,比如: 修改表的操作符功能或为操作符添加新功能(译注:如果您学过 C++ 之类的面向对象的语言,应该比较好理解,其实它实现的是操作的重载)。
什么是模块?Lua 中的模块与库的概念相似,每个模块都有一个全局唯一名字,并且每个模块都包含一个表。使用一个模块时,可以使用 require 加载模块。模块中可以包括函数和变量,所有这些函数和变量被表存储于模块的表中。模块中的表的功能类似于命名空间,用于隔离不同模块中的相同的变量名。
在 Lua 语言中,表是唯一可以用来创建不同数据类型的数据结构,比如常见的数组和字典都是用表来创建的。 Lua 语言中经常到关联数组这种数据类型,它不仅可以用数值作为索引值,除了 nil 以外的字符串同样可以作为其索引。表没有固定的大小,当数据量增加时表会自动增大。 Lua 语言中的各种结构表示都用到了表,包括包(package)的表示。当我们使用方法 string.
迭代器是用于遍历集合或容器中元素的一种结构。在 Lua 语言中,集合往往指的是可以用来创建各种数据结构的表。比如,数组就是用表来创建的。 通用迭代器通用迭代器可以访问集合中的键值对。
数组是一组有序的对象排列,既可以是一维的也可以是多维的。 在 Lua 语言中,数组是用整数索引表实现的。数组的大小并不固定,随着数组元素的增加,它可以动态地增加内存空间大小。 一维数组一维数组可以使用一个简单的表结构表示。可以通过一个简单循环初始化数组或者读取数组中数据。
字符串就是一个由字符或控制字符组成的序列。字符串可以用以下三种方式任意一种进行初始化。
函数用于将一组语句组合起来完成一个任务。你可以将你的代码分割到不同的函数中。如何将你的代码分到不同的函数中完全由你自己决定,不过一般会按照逻辑功能进行划分,每个函数都执行一个特定的任务。 在 Lua 中提供了大量的内置函数供我们使用。例如,print() 函数用于将输入的参数输出到终端。 函数往往也被称作方法,子例程或过程等等。
决策结构要求程序开发人员设置一个或多个计算条件。如果条件计算结果为真,则执行一个或多个语句;如果条件为假,则执行另外的语句。 下面是大多数程序语言中的决策结构的一般形式: Lua 语言中所有布尔真和非 nil 值都当作真;把所有的布尔假和 nil 作为假。请注意,Lua 中的零会被当作真,而其它大部分语言会将零当作假。Lua 语言提供了如下几类决策语句。
虽然一般情况下,语句都是顺序执行的:函数内的第一条语句先执行,然后是第二条,依次类推。 但是还是可能存在需要执行一段代码多次的情况。为此编程语言提供各式各样的控制结构实现复杂的程序执行路径。其中,循环语句可以让我们可以执行一条或一组语句多次。下图中所描述的是大多数语言中循环语句的形式: Lua 语言提供了如下几种循环结构语句。
操作符是用于告诉解释器执行特定的数学或逻辑运算的符号。Lua 语言有丰富的内置操作符,主要包括以下几类: 算术运算操作符关系运算操作符逻辑运算操作符其它操作符这篇教程将会依次介绍以上四类操作符。 算术去处操作符下面的表中列出了所有 Lua 语言支持的算术运算操作符。
Lua 是动态类型编程语言,变量没有类型,只有值才有类型。值可以存储在变量中,作为参数传递或者作为返回值。 尽管在 Lua 中没有变量数据类型,但是值是有类型的。下面的列表中列出了数据类型: 值类型 描述 nil 用于区分值是否有数据,nil 表示没有数据。 boolean 布尔值,有真假两个值,一般用于条件检查。
变量就是给一块内存区域赋予的一个名字。变量使得在程序中就可以修改或读取相应的内存区域中的内容。它可以代表各种不同类型的值,包括函数与表。 变量的名字由字母、数字与下划线组成。它必须是字母或下划线开头。由于 Lua 是字母大小写敏感的,所以大写字母与小写字母是不一样的。
Lua 学起来非常简单。现在,让我们开始创建我们的第一个 Lua 程序吧! 第一个 Lua 程序Lua 提供交互式编程模式。在这个模式下,你可以一条一条地输入命令,然后立即就可以得到结果。你可以在 shell 中使用 lua -i 或者 lua 命令启动。输入命令后,按下回车键,就启动了交互模式,显示如下: $ lua -i $ Lua 5.1.4 Copyright (C) 1994-2008 Lua.
本地环境搭建在本地搭建 Lua 编程语言的开发运行环境,你需要在你的计算机上安装如下三个软件:(1) 文本编辑器。(2) Lua 解释器。(3)Lua 编译器。 文本编辑器文本编辑器用来编辑你的程序代码。有如下几款常用的文本编辑器软件:Windows notepad、Brief、Epsilon、EMACS、vim/vi。在不同的操作系统中有各自不同的编辑器,而且编辑器的版本不一样。
Lua 是用 C 语言开发的可扩展的轻量级编程语言。它起源于 1993 年由 Roberto lerusalimschy,Luiz Henrique de Figueiredo 与 Waddemar Celes 领导的一个内部项目。设计者的初衷是希望 Lua 可以成为一款整合 C 语言代码以及其它传统语言代码的软件。
关注时代Java