lua 网站程序-Lua 编程:第二版

14.3 非全局环境

第15章模块和包

15.1需要函数

15.2 编译模块的基本技术

15.3 使用环境

15.4模块功能

15.5 子模块和包

第16章面向对象编程

16.1级

16.2 继承

16.3 多重继承

16.4 渗透率

16.5 单一方法

第十七章弱引用表

17.1 记忆功能

17.2 对象属性

17.3 表默认值的审查

第三部分

第十八章 物理图书馆

第19章 表库

19.1 插入和删除

19.2 排序

19.3 加入

第20章字符串库

20.1 基本字符串函数

20.2 模式匹配函数

20.2.1string.find函数

20.2.2string.match函数

20.2.3string.gsub函数

20.2.4string.gmatch函数

20.3 模式

20.4 捕获

20.5 更换

20.5.1URL编码

20.5.2选项卡扩展

20.6 方法

第21章 I/O库

21.1 简单I/O模型

21.2 完整的I/O模型

21.2.1 性能提示

21.2.2 二进制补码文件

21.2.3 其他文件操作

第22章操作系统库

22.1 日期和时间

22.2 其他系统调用

第23章调试库

23.1 反射机制

23.1.1 访问局部变量

23.1.2 访问非局部变量(non-localvariable)

23.1.3 访问其他协程

23.2 钩子

23.3 性能分析(简介)

第 4 部分

第24章 CAPI概述

24.1 第一个例子

24.2 堆栈

24.2.1 推送元素

24.2.2 查询元素

24.2.3 其他堆栈操作

24.3 CAPI中的错误处理

24.3.1 应用程序代码中的错误处理

24.3.2 库代码中的错误处理

第25章扩展应用程序

25.1 基础知识

25.2表操作

25.3 调用Lua函数

25.4 通用调用函数

第26章从Lua调用C

26.1C功能

26.2C模块

第27章编写C函数的技术

27.1 链表操作

27.2 字符串操作

27.3 在C函数中保存状态

27.3.1 注册表

27.3.2 C 函数环境

27.3.3上值

第28章用户定义类型

28.1用户数据

28.2元一桌

28.3 面向对象的访问

lua 网站程序-Lua 编程:第二版

28.4 现场访问

28.5 轻量级用户数据(lightuserdata)

第29章管理资源

29.1 目录迭代器

29.2XML解析器

第30章线程和状态

30.1 多线程

30.2Lua状态

第31章视频内存管理

31.1 分配函数

31.2 垃圾收集器

31.2.1 原子操作

31.2.2 垃圾收集器API

译者序言

周伟迪(饰)少年时因对电脑游戏的兴趣而爱上了电脑编程,并涉猎过各种开发技术。 曾在游戏编程教育领域工作2年,后在北京育碧工作,参与SplinterCell4(Xbox360)、Rayman4(Xbox360)等项目的开发。 目前就职于Epic Games中国,从事MMO引擎以及基于Unreal3的MMO游戏开发。 业余时间经常参与各种软件的开发,翻译过《Direct3D游戏编程入门教程》一书。 ...

前言

当 Waldemar、Luiz 和我在 1993 年开始开发 Lua 时,我们很难想象 Lua 会变成今天的样子。 最开始,Lua只是作为内部语言来服务于两个特定的项目。 现在Lua广泛应用于各个领域,只要有一种简单、可扩展、可移植、高效的脚本语言就足够了。 Lua 随处可见,例如嵌入式系统、移动设备、网络服务器,甚至游戏。 。

从一开始,我们就设计 Lua 来与用 C 或其他常用语言编写的软件集成。 这些可集成的功能带来了许多好处。 Lua仍然是一门简单而优雅的语言。 它的设计部分原因是它并不打算做这些C语言已经做得很好的事情。 比如C语言的超强性能、执行底层运算的能力以及与第三方软件的接口等。 Lua使用C语言来完成这个任务。 Lua提供的功能不太适合C语言。 例如,相对于硬件的高级表示、动态结构、无冗余(NoRedundancy)、简单的测试和调试。 因此,Lua还实现了安全的运行环境、一套手动内存管理机制、优秀的字符串处理能力和动态大小数据处理功能。

Lua的大部分功能都来自于它的标准库,这也符合Lua的设计原则。 因为Lua的主要特点就是它的可扩展性。 语言的许多特征都证明了这一点。 动态类型提供对多态性的支持。 手动内存管理简化了接口,因此无需决定谁分配内存、谁释放内存、如何处理溢出等。高阶(Higher-order)函数和匿名函数允许更高级别的参数化,使函数更多才多艺的。

Lua不仅是一种可扩展语言,而且还是一种“胶水语言”。 Lua 支持基于组件的软件开发方法,通过将现有的高级组件粘合在一起来创建新的应用程序。 此类组件可以用静态类型语言(例如 C 或 C++)编译或编写。 Lua可以成为组织和连接各种组件的磁带。 通常,组件(或对象)代表更具体的、较低级别的概念(例如小部件、数据结构)。 它们在程序开发过程中很少改变,但会占用最终程序的大部分CPU时间。 Lua可以给出一个应用程序最终的样子,而这部分内容在产品的开发周期中可能会反复改变。 与其他磁带技术不同,Lua 是一种功能齐全的语言。 因此,除了粘合组件之外,Lua还可以用来适配或修改组件,甚至创建一个全新的组件。

其实Lua并不是唯一的脚本语言,还有很多其他语言或多或少可以解决同样的问题。 Lua 提供了一系列功能,使其独一无二,成为解决许多问题的首选语言。

可扩展性:Lua的可扩展性如此出色,以至于很多人认为Lua不是一种编程语言,而是一个用于创建特定领域语言的工具包。 Lua 从一开始就被设计为可扩展的,既可以使用 Lua 代码,也可以使用外部 C 代码。 作为这个概念的一个例子,Lua的大部分基本功能都是通过外部库来实现的。 将 Lua 与 C/C++ 集成非常容易。 据悉,Lua还可以集成到其他一些语言中,例如Fortran、Java、Smalltalk、Ada、C#,甚至其他脚本语言,例如Perl和Ruby。

简单性:Lua 是一种简单、紧凑的语言。 它没有太多概念,但每个概念都很有用。 这种简单性使得 Lua 特别适合学习lua 网站程序,也有助于减小 Lua 本身的大小。 完整的 Lua 发行版可以轻松存储在软盘驱动器上。

高效:Lua 的实现特别高效。 独立评估结果表明,Lua 是脚本(解释性)语言领域中速度最快的语言之一。

可移植性:当我们提到Lua的可移植性时,除了指Lua可以在Windows和UNIX平台上运行之外,还意味着Lua可以在任何平台上运行,包括:PlayStation、XBox、MacOS-9、OSX 、BeOS、QUALCOMMBrew、MS-DOS、IBM 大型机、RISC 操作系统、Symbian 操作系统、PalmOS、ARM 处理器、Rabbit 处理器、类 UNIX 或类 Windows 系统。 所有这些平台的源代码本质上是相同的代码。 Lua不使用条件编译在不同平台上进行特殊处理。 我们只依赖ANSI(ISO)C标准来编译Lua的实现代码。 这样就无需更改它以适应新平台。 如果你有 ANSIC 编译器,那么就编译 Lua 吧。

用户和读者

Lua用户通常可以分为三大类:使用嵌入在应用程序中的Lua的用户、使用Lua类库程序的用户以及同时使用Lua和C的用户。

lua 网站程序-Lua 编程:第二版

许多人在应用程序中使用嵌入的 Lua,例如 CGILua 或游戏。 此类程序使用 Lua 的 CAPI 来注册各个新函数、创建新类型、更改语言中各个操作的行为,并根据其特定需求配置 Lua。 一般来说,这些程序的用户可能不知道Lua是一种独立的编程语言,仅在特定领域使用。 例如,CGILua的用户往往会觉得Lua是专门为Web设计的语言,而个人游戏的玩家往往会觉得Lua是游戏本身独有的语言。

Lua作为一门独立的编程语言,也是非常有用的。 除了用于文本处理或编译小型一次性程序外,还可以用于大中型项目。 对于前者来说,Lua的主要功能来自于它的扩展库。 Lua的标准库提供了模式匹配和其他一些字符串处理函数。 另一方面,Lua扩展库的数量也在不断减少lua 网站程序,目前已有大量可用的外部库。 例如,Kepler 项目是一个用于 Web 开发的 Lua 库,它提供页面生成、数据库访问以及 LDAP、XML 和 SOAP 的包。 LuaForge 站点列出了许多 Lua 的外部库。

Lua 用户的最后一类是 C 程序员,他们在编写应用程序时使用 Lua 作为 C 库。 这些人更有可能编写 C 代码而不是 Lua 代码。 即便如此,他们仍然需要很好地掌握 Lua,这样他们才能创建易于使用且易于与该语言集成的界面。 ..

本书为所有三个类别提供了丰富的内容。 第一部分介绍了语言本身并展示了它所具有的所有功能。 我们将重点介绍该语言的各种特性,并使用大量示例来演示如何将它们应用到实际任务中。 其中,会有一些章节涉及到基本概念,比如控制结构。 其他章节涵盖中间主题,例如迭代器和协程。

第二部分深入介绍表,这是Lua中唯一的数据结构。 其他章节讨论数据结构、持久性、包和面向对象编程。 这部分将阐明该语言的真正功能。

第 3 部分展示了 Lua 标准库。 本节对于那些想要使用 Lua 作为独立语言的人来说非常有用。 本部分每一章都会介绍一个库,包括:物理库、表库、字符串库、I/O库、操作系统库、调试库。

本书的最后部分将介绍Lua和C之间的API,面向那些想要使用C访问Lua功能的人。 与本书其他章节相比,这部分内容变得非常不同。 因为,我们将讨论 C 编程,而不是 Lua 编程。 所以,这个时候我们就需要换一个角度来思考问题。 对于一些读者来说,对CAPI的讨论其实并不感兴趣,但对于其他读者来说,这可能是他们最关心的书中的部分。

关于本书的第二版

本书是《Lua编程①》第一版的更新和扩充。 事实上,两个版本的结构几乎相同,但新版本有一些全新的材料。

首先,全书已更新至Lua5.1。 尤其是模块和包相关的章节,大部分都重新绘制了。 此外,还重新绘制了一些示例来演示如何利用Lua5.1提供的新功能。 不过,一些Lua5.0中没有的功能也明确标注出来,所以本书也可以用于Lua5.0。

其次,有一些新的例子。 此类示例包括:图形表示、选项卡扩展和压缩、元组的实现等。

最后,本书有两个全新的章节。 其中一章解释了如何在 C 中使用多状态和多线程,并包含一个实际示例演示如何为 Lua 实现多进程功能。 另一章介绍视频内存管理并演示如何处理视频内存分配和垃圾收集器。

《Lua编程》第一版出版后,一些出版社表示有意出版本书的第二版。 但最终我们决定像第一版一样自己出版第二版。 虽然这可能会影响收入效率,但这样做的好处也很显着。 因为我们对本书的内容有完全的控制权,所以我们可以自由选择何时发布另一个版本,我们可以确保有足够的供应,并且保留以其他方式出版本书的所有权利。

其他资源

对于任何想要学习一门语言的人来说,参考指南是必备的,本书并不是要取代 Lua 参考指南。 相反,它们是相辅相成的。 该指南只描述了Lua,没有代码示例,也没有对该语言预制组件原理的解释。 但另一方面,参考指南描述了整个语言,而本书并没有触及该语言中很少使用的个别“阴暗角落”。 据悉,该指南是Lua的权威文档。 若本书与指南有冲突,请以指南为准。 如需指南或获取有关 Lua 的更多信息,请访问 Lua 的官方网站:。

您还可以在 Lua 用户站点上找到一些有用的信息,该站点由以下用户组维护: 。 该网站提供了一组教程、第三方软件包和文档的列表以及官方 Lua 电子邮件列表的存档。 另外,你还可以看看这本书的网页:~roberto/pi12/。

在这里您可以找到最新的勘误表、书中各个示例的代码以及一些附加材料。

本书讲的是Lua5.1,但书中大部分内容也适用于Lua5.0。 本书会明确标注Lua5.1和Lua5.0的区别。 如果您使用的是较新的版本,请查看相应的指南以了解不同版本之间的细微差别。 如果您仍在使用5.0之前的版本,则应该升级。

布局约定

本书用一对双冒号(“”)括起文字常量,用一对单冒号括起单个字母(例如“a”)。 用于模式的字符串也用双冒号括起来,例如“[%w_]*”。 本书的一些程序块代码和标识符使用了 CourierNew 字体。 较大的程序块如下:

--“HelloWorld”程序

print("HelloWorld")--]HelloWorld

标记--]代表句子的输出,有时也代表表达式的结果:

打印(10)--]10

13+3--]16

因为 Lua 中的注释是以两个连字符(--)开始的,所以在程序中包含这样的标记是没有问题的。 最后,本书使用符号 [--] 来表示各个等效项:

这个那个

lua 网站程序-Lua 编程:第二版

这意味着对于Lua来说,无论你用这个还是那个,结果都是一样的。

致谢

如果没有几位同学和组织的帮助,这本书是不可能完成的。 感谢 Lua 联合开发者 Luiz Henrique de Figueiredo 和 Waldemar Celes 在各方面持续提供的帮助。

感谢 Gavin Wraith、André Carregal、Asko Kauppi、Brett Kapilik、John D. Ramsdell 和 Edwin Moragas 审阅了本书的草稿并提供了宝贵的建议。

LightningSource 在本书的彩色印刷和发行方面非常可靠和高效。 没有他们,自行出版这本书几乎是不可能的。

Dimaquina 的 Antonio Pedro 耐心地听取了我对封面设计的意见,并最终提供了正确的封面设计。

Norman Ramsey 为本书的出版提供了一些有益的建议。

我还要感谢 PUC-Rio 和 CNPq 对我工作的持续支持。

最后,我必须对诺埃米·罗德里格斯(Noemi Rodriguez)表示最深切的谢意,感谢他照亮了我的生活。

作者...

前言

关于路亚.

Lua可能因为几款著名的游戏而被大多数中国人所熟悉。 其实,作为一名游戏领域的开发者,我对Lua的理解来自于一种无目的的为了好玩的自学(有时候学习本身,尤其是探索未知事物的过程,也是一种充满乐趣的体验)。 当时我对Lua和Python这两种脚本语言进行了学习和比较,但最终还是选择了深入学习Lua。 因为我更喜欢Lua的简单性,即它的简单、整洁。

说Lua简单是因为从语言的角度来看,Lua只提供了一些最基本的预制组件。 通过这种预制的构建块,Lua用户可以创建更复杂的功能。 例如,Lua并不是严格意义上的面向对象语言。 这是因为它的语言层面并没有直接提供class等关键字,也没有显式的继承句型和虚函数,但是Lua确实提供了创建这样的面向对象元素的能力。 另一方面,Lua 中没有结构体(例如 C 中的 struct),没有命名空间,甚至没有原生链表。 Lua 提供了用于创建此类元素的预制组件。 而更有趣的是,这个“通用”组件最终是一种常用的数据结构——关联链表,在Lua中称为表。

Lua 之所以被称为干净,是因为该语言本身及其针对 C 语言的 API 都非常规则。 Lua的句型倾向于传统的结构化语言(如Pascal),简单易懂。 它的CAPI基于一个非常“虚拟的堆栈”工作,用于在宿主语言和Lua之间交换数据。 堆栈的构建大大简化了CAPI的设计和使用,但可以有效地将C程序员(或其他语言的程序员)与Lua本身的实现隔离开来。

但是,我们还是需要辩证地评价一些事情。 Lua 的简单性和干净性是有代价的,无法验证。 直接的后果可能就是我们很难用Lua来开发小程序或者小程序了。 但如果你想一想,你就会发现,需要脚本语言来开发中大型程序已经变得有点“用不上”了。 脚本的作用无非是完成一些相对简单且多变的任务,或者作为宿主语言的延伸和扩展,或者作为一种“粘合剂”来​​绑定各种应用程序。 对此,简单的Lua确实提供了很好的支持,“可扩展性”在Lua设计之初就被列为基本设计目标之一。 您可以轻松地为Lua编译扩展库,而不必局限于该语言自带的标准库。

关于这本书...

我先是在Lua官方网站上阅读了《(Programming in Lua (1st Edition))》,然后这一年里断断续续地读了两遍多的第一版。当得知这本书的第二版已经出版时,我无法自拔了。迫不及待地从亚马逊上订购了,当我再次阅读时,我深深感受到这本书对于学习Lua的价值,于是我向电子工业出版社推荐了它,最后与出版社合作推出了它本书英文版权。

作为Lua最权威的专着之一,本书由Lua的主要设计者和实现者Roberto Ierusalimschy撰写。 无论是从内容覆盖的广度还是概念表达的深度来看,本书都是学习和使用Lua的首选教材。

致谢

本书的翻译工作经历了秋、冬、冬四个季节。 现在,我校对完这本书的所有章节后,所记得的就是翻译过程中各个阶段的情景片段。 如果没有以下人士的帮助和贡献,本书的最终成功出版是不可能的。

本书推出之初,电子工业出版社的何正艳(哈)起到了主要的推动和推广作用,但她负责协调本书后续的翻译工作。 另外,感谢她在处理一年来影响译者翻译进度的几起风波时的包容和理解。

翻译过程中,朋友徐陵完成了本书第三部分(共6章)的初译稿,他和儿子龙春辉审阅了本书第一部分(共10章) 。 学校,并给出了很多专业的意见。

临交​​稿时,父亲张继以非专业的角度逐条阅读了整本书,发现了很多错别字和句子结构问题。 作为一个非专业读者,我被她阅读这本书所表现出的耐心所折服,这本书就像一本天书。

稿件投稿后,编辑王树伟负责本书的后续工作。 他花费了大量的时间和精力进行排版和审阅。

最后,我要感谢张继,他让我体验到了极其美好的生活。

周维迪

...

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 网站程序 lua 网站程序-Lua 编程:第二版 https://www.wkzy.net/game/200333.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务