LUA_5.3_参考手册.pdf
Lua是一种被设计成支持通用过程式编程的扩展式程序设计语言,并提供了相关数据描述设施。它不仅支持过程式编程,还对面向对象、函数式以及数据驱动式编程提供了良好的支持。作为一种嵌入式脚本语言,Lua既强大又轻量,能够被嵌入到任何需要的程序中使用。Lua由cleanC实现,这是一种标准C和C++间的共通子集。Lua作为一门扩展式语言,并没有"main"程序的概念,它必须嵌入到宿主程序中才能运行。宿主程序能够调用Lua代码执行,读写Lua变量,以及注册C函数供Lua代码调用。借助于C函数,Lua可以定制编程语言的语法框架,以适应不同的应用领域。 Lua是一个自由软件,采用的使用许可证使得其使用过程无需任何担保。Lua的官方发布版中包含了一个名为lua的宿主程序示例,该示例利用Lua库实现了一个完整的独立的Lua解释器,可以用于交互式应用或批处理。Lua的最新官方版本为Lua 5.3。 Lua是一种动态类型语言,意味着变量本身没有类型,只有值才有类型。语言中不存在类型定义,所有的值都携带了自己的类型信息。在Lua中,值是一等公民,可以被保存在变量中、作为参数传递给其他函数,也可以作为返回值。Lua的八种基本类型包括nil、boolean、number、string、function、userdata、thread和table。其中nil类型的值主要用于表示无意义的状态;boolean类型只包含false和true两种值;number类型可以是整数或实数;string类型是一个不可变的字节序列,可以容纳任意8位值;function类型代表了由Lua或C语言编写的函数;userdata类型允许将C语言中的数据存储在Lua变量中;thread类型用于表示独立的执行序列,即协程;table类型是一个关联数组,可以使用不同的值作为索引,是Lua中唯一的数据结构。 在Lua中,所有值都是动态类型的,程序员不需要声明变量的类型,也不需要管理内存,因为Lua使用垃圾收集机制自动处理内存的分配和释放。Lua的字符串类型与编码无关,它不关心字符串中的具体内容。Lua中的number类型有两种内部表现方式:整数和浮点数。标准Lua使用64位整数和双精度(64位)浮点数,但Lua也可以编译为使用32位整数和单精度(32位)浮点数,这对于小型机器和嵌入式系统更为适用。 Lua支持调用和操作用Lua或C语言编写的函数。而userdata类型允许将C语言中的数据存储在Lua变量中,用户数据的值是一个内存块,可以分为完全用户数据和轻量用户数据两种。thread类型在Lua中用于实现协程,允许程序员创建独立的执行序列。table类型是Lua中最为重要的数据结构,可以用作普通数组、序列、符号表、集合、记录、图、树等。Lua的记录类型使用域名作为索引,语言提供了a.name的语法糖来替代a["name"]的方式以方便记录结构的使用。表的创建方式多种多样,使用{1..n}的正整数集可以索引的表被称为序列,而表中每个域的值可以是任何类型,除了nil和NaN。 关于Lua的设计思想和技术细节,可以通过Lua网站上的技术论文和Roberto的《Programming in Lua》一书进行深入了解。