基本介绍
目前很多程序语言都专注于帮你编写成千上万行的代码,所以此类型的语言所提供的包、命名空间、复杂的类型系统及无数的结构,有上千页的文档需要操作者学习。而lua并不帮你编写大量的代码的程序,相反的,lua仅让你用少量的代码解决关键问题。为实现这个目标,像其他语言一样lua依赖于其可扩展性。但是与其他语言不同的是,不仅用lua编写的软件易于扩展,而且用其他语言比如C/C++编写的软件也很容易使用lua扩展其功能。
一开始,lua就被设计成很容易和传统的C/C++整合的语言。这种语言的二元性带来了极大的好处。lua是一个小巧而简单的语言,因为lua不致力于做C语言已经做得很好的领域,比如:性能、底层操作以及与第三方软件的接口。lua依赖于C去做完成这些任务。lua所提供的机制是C不善于的:高级语言、动态结构、简洁、易于测试和调试等。正因为如此,lua具有良好的安全保证,自动内存管理,简便的字符串处理功能及其他动态数据的改变。
lua不仅是一种易于扩展的语言,也是一种易整合语言(glue language);lua支持基于组件的,我们可以将一些已经存在的高级组件整合在一起实现一个应用软件。一般情况下,组件使用像C/C++等静态的语言编写。但lua是我们整合各个组件的粘合剂。又通常情况下,组件(或对象)表现为具体在程序开发过程中很少变化的、占用大量CPU时间的决定性的程序,例如窗口部件和数据结构。对那种在产品的生命周期内变化比较多的应用方向使用Lua可以更方便的适应变化。除了作为整合语言外,lua自身也是一个功能强大的语言。lua不仅可以整合组件,还可以编辑组件甚至完全使用Lua创建组件。
除了lua外,还有很多类似的脚本语言,例如:Perl、Tcl、Ruby、Forth、Python。虽然其他语言在某些方面与Lua有着共同的特色,但下面这些特征是lua特有的:
1、可扩展性
lua的扩展性非常卓越,以至于很多人把Lua用作搭建领域语言的工具(注:比如游戏脚本)。Lua被设计为易于扩展的,可以通过Lua代码或者C代码扩展,Lua的很多功能都是通过外部库来扩展的。Lua很容易与C/C++、java、fortran、Smalltalk、Ada,以及其他语言接口。?
2、简单
lua本身简单,小巧;内容少但功能强大,这使得Lua易于学习,很容易实现一些小的应用。它的完全发布版(代码、手册以及某些平台的二进制文件)仅用一张软盘就可以装得下。
3、高效率
lua有很高的执行效率,统计表明Lua是目前平均效率最高的脚本语言。?
4、与平台无关
lua几乎可以运行在所有我们听说过的系统上,如NextStep、OS/2、PlayStation?II?(Sony)、Mac?OS-9、OS?X、BeOS、MS-DOS、IBM?mainframes、EPOC、PalmOS、MCF5206eLITE?Evaluation?Board、RISC?OS,及所有的Windows和Unix。Lua不是通过使用条件编译实现平台无关,而是完全使用ANSI(ISO)C,这意味着只要你有ansi c编译器你就可以编译并使用Lua。
lua程序设计目录
第一篇 语言第 0 章 序言
0.1 序言
0.2 Lua的使用者
0.3 Lua的相关资源
0.4 本书的体例
0.5 关于本书
0.6 感谢
第 1 章 起点
1.1 Chunks
1.2 全局变量
1.3 词法约定
1.4 命令行方式
第 2 章 类型和值
2.1 Nil
2.2 Booleans
2.3 Numbers
2.4 Strings
2.5 Functions
2.6 Userdata and Threads
第 3 章 表达式
3.1 算术运算符
3.2 关系运算符
3.3 逻辑运算符
3.4 连接运算符
3.5 优先级
3.6 表的构造
第 4 章 基本语法
4.1 赋值语句
4.2 局部变量与代码块(block)
4.3 控制结构语句
4.4 break和return语句
第 5 章 函数
5.1 多返回值
5.2 可变参数
5.3 命名参数
第 6 章 再论函数
6.1 闭包
6.2 非全局函数
6.3 正确的尾调用(Proper Tail Calls)
第 7 章 迭代器与泛型for
7.1 迭代器与闭包
7.2 范性for的语义
7.3 无状态的迭代器
7.4 多状态的迭代器
7.5 真正的迭代器
第 8 章 编译·运行·错误信息
8.1 require函数
8.2 C Packages
8.3 错误
8.4 异常和错误处理
8.5 错误信息和回跟踪(Tracebacks)
第 9 章 协同程序
9.1 协同的基础
9.2 管道和过滤器
9.3 用作迭代器的协同
9.4 非抢占式多线程
第 10 章 完整示例
10.1 Lua作为数据描述语言使用
10.2 马尔可夫链算法
第二篇 tables与objects
第 11 章 数据结构
11.1 数组
11.2 矩阵和多维数组
11.3 链表
11.4 队列和双端队列
11.5 集合和包
11.6 字符串缓冲
第 12 章 数据文件与持久化
12.1 序列化
第 13 章 Metatables and Metamethods
13.1 算术运算的Metamethods
13.2 关系运算的Metamethods
13.3 库定义的Metamethods
13.4 表相关的Metamethods
第 14 章 环境
14.1 使用动态名字访问全局变量
14.2 声明全局变量
14.3 非全局的环境
第 15 章 Packages
15.1 基本方法
15.2 私有成员(Privacy)
15.3 包与文件
15.4 使用全局表
15.5 其他一些技巧(Other Facilities)
第 16 章 面向对象程序设计
16.1 类
16.2 继承
16.3 多重继承 122
16.4 私有性(privacy)
16.5 Single-Method的对象实现方法
第 17 章 Weak表
17.1 记忆函数
17.2 关联对象属性
17.3 重述带有默认值的表
第三篇 标准库
第 18 章 数学库
第 19 章 Table库
19.1 数组大小
19.2 插入/删除
19.3 排序
第 20 章 String库
20.1 模式匹配函数
20.2 模式
20.3 捕获(Captures)
20.4 转换的技巧(Tricks of the Trade)
第 21 章 IO库
21.1 简单I/O模式
21.2 完全I/O 模式
第 22 章 操作系统库
22.1 Date和Time
22.2 其它的系统调用
第 23 章 Debug库
23.1 自省(Introspective)
23.2 Hooks
23.3 Profiles
第四篇 C API
第 24 章 C API纵览
24.1 第一个示例程序
24.2 堆栈
24.3 C API的错误处理
第 25 章 扩展你的程序
25.1 表操作
25.2 调用Lua函数
25.3 通用的函数调用
第 26 章 调用C函数
26.1 C 函数
26.2 C 函数库
第 27 章 撰写C函数的技巧
27.1 数组操作
27.2 字符串处理
27.3 在C函数中保存状态
第 28 章 User-Defined Types in C
28.1 Userdata
28.2 Metatables
28.3 访问面向对象的数据
28.4 访问数组
28.5 Light Userdata
第 29 章 资源管理
29.1 目录迭代器
29.2 XML解析
发表评论
0条评论软件排行榜
热门推荐
- 得间免费小说电脑版 v5.3.0.372.58M / 简体中文
- 有柿电脑版 v11.6.284.23M / 简体中文
- cnki全球学术快报电脑版 v1.0.1135.99M / 简体中文
- 京东读书电脑版 v1.13.4官方版1.98M / 简体中文
- 潇湘书院电脑版 v2.3.11.888官方版49.65M / 简体中文
- 数据挖掘导论 官方版61.61M / 简体中文
- 吉利博瑞用户手册 pdf高清版57.89M / 简体中文
- linux常用命令大全 chm版1.48M / 简体中文
- 本草纲目 5.34M / 简体中文
- docker入门实战 pdf完整版1.38M / 简体中文