
欢迎!
Lua是一种强大而快速的编程语言,易于学习和使用,并嵌入到您的应用程序中。
Lua旨在成为一种轻量级可嵌入脚本语言。它用于 各种应用程序,从游戏到Web应用程序和图像处理。
有关详细信息以及选择Lua的原因,请参阅 about页面。
了解Lua程序在现场演示中的外观和感觉 。
学习

开始学习Lua的好地方是“Lua 编程 ”一书 ,有 平装本和 电子书。第一版可在线免费获取。另见 本书的课程笔记。
Lua语言的官方定义在参考手册中给出 。
有关更多信息,请参阅 文档页面和 Wiki 。
获得帮助
我们的 社区 很友好,如果您需要,很可能会帮助您。只需访问邮件列表,聊天室和 stackoverflow。
如果您需要葡萄牙语帮助,请加入 Lua BR邮件列表并访问pt.stackoverflow。
另请参阅 常见问题解答,社区维护的 wiki 和 LuaFaq,以及更长的 uFAQ。
工具
如果您需要补充标准的Lua库来处理更复杂的任务,请访问 Lua模块的主要存储库LuaRocks。另请参阅 Awesome Lua,精选Lua软件包和资源的精选列表。在 LUA用户维基 列出了许多 用户贡献的插件 为lua。
安装
如果您不想在计算机上安装任何内容,请 使用 现场演示与Lua一起玩。
要在您的计算机上运行Lua程序,您需要一个独立的Lua解释器以及一些额外的Lua库。使用您喜欢的文本编辑器编写您的Lua程序。确保将程序保存为纯文本。如果您想要IDE,请尝试使用 ZeroBrane Studio。
如果您使用Windows,请尝试 LuaDist,这是包含电池的Lua的多平台分发版。
如果您使用Linux或Mac OS X,Lua已经安装在您的系统上,或者有一个Lua软件包。确保您获得最新版本的Lua(目前为5.3.5)。
如下所述,Lua也很容易从源代码构建。
从源头构建
Lua很容易构建和安装。只需下载并按照 包中的 说明进行操作即可。
这是一个简单的终端会话,它下载Lua的当前版本并在Linux系统中构建它:
curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz
tar zxf lua-5.3.5.tar.gz
cd lua-5.3.5
做linux测试
对于Mac OS X,请使用make macosx test
。如果你没有卷曲,试试wget。
如果您使用的是Windows,并希望从源代码编译Lua中,有 详细的说明 在 维基。
嵌入
要将Lua嵌入到C或C ++程序中,您需要使用Lua头来编译程序,并使用Lua库来链接它。如果您正在为您的平台获得现成的Lua软件包,那么您可能也需要开发软件包。否则,只需 下载 Lua并将其源目录添加到您的项目中。
总结
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组于 1993 年开发的,该小组成员有:Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo。
其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
- 轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。
- 可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。
- 其它特性:
- 支持面向过程(procedure-oriented)编程和函数式编程(functional programming);
- 自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;
- 语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;
- 通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。
非常活跃于如下领域:
- 游戏开发
- 独立应用脚本
- Web 应用脚本
- 扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench
- 安全系统,如入侵检测系统
LUA官方编程API

Lua编程(第一版)
内容 · 勘误 · 代码 · 手册 · 较新版本
这是Lua编程第一版的在线版本,是 Lua首席架构师编写的Lua编程各方面的详细和权威的介绍。勘误表中列出的所有更正 均已在在线版本中进行。

Lua编程,作者:Roberto Ierusalimschy
http://Lua.org,2003年12月
ISBN 8590379817
第一版针对的是 Lua 5.0, 并且仍然具有很大的相关性。
如果你觉得这个在线版本有用,请考虑 购买一个副本 的的 最新版本。这有助于 支持Lua项目。
版权所有©2003-2004 Roberto Ierusalimschy。版权所有。
此在线图书仅供个人使用。它不能复制到其他网站或以任何形式进一步分发。
内容
- 覆盖
- 前言
- 听众
- 其他资源
- 一些印刷约定
- 关于这本书
- 致谢
- 第一部分·语言
- 1 - 入门
- 1.1 - 大块
- 1.2 - 全局变量
- 1.3 - 一些词汇约定
- 1.4 - 独立翻译
- 2 - 类型和值
- 2.1 - 无
- 2.2 - 布尔
- 2.3 - 数字
- 2.4 - 字符串
- 2.5 - 表格
- 2.6 - 功能
- 2.7 - 用户数据和线程
- 3 - 表达
- 3.1 - 算术运算符
- 3.2 - 关系运算符
- 3.3 - 逻辑运算符
- 3.4 - 连接
- 3.5 - 优先顺序
- 3.6 - 表构造函数
- 4 - 声明
- 4.1 - 作业
- 4.2 - 局部变量和块
- 4.3 - 控制结构
- "https://http://www.lua.org/pil/4.3.1.html">4.3.1 - 如果 然后 其他人
- "https://www.lua.org/pil/4.3.2.html">4.3.2 - 同时
- "https://www.lua.org/pil/4.3.3.html">4.3.3 - 重复
- 4.3.4 -数字为
- 4.3.5 -通用的
- f="https://whttp://ww.lua.org/pil/4.4.html">4.4 - 打破(Break)并返回
- 5 - 功能
- 5.1 - 多重结果
- 5.2 - 可变数量的参数
- 5.3 - 命名参数
- 6 - 有关功能的更多信息
- 6.1 - 关闭
- 6.2 - 非全局函数
- 6.3 - 正确的尾巴呼叫
- 7 -迭代器和通用的
- 7.1 - 迭代器和闭包
- 7.2 -通用的语义为
- 7.3 - 无状态迭代器
- 7.4 - 具有复状态的迭代器
- 7.5 - 真正的迭代器
- 8 - 编译,执行和错误
- f="https://www.lua.org/pil/8.1.html">8.1 - require功能
- 8.2 - C包
- 8.3 - 错误
- 8.4 - 错误处理和异常
- 8.5 - 错误消息和回溯
- 9 - 协同程序
- 9.1 - 协同基础知识
- 9.2 - 管道和过滤器
- 9.3 - 作为迭代器的协同程序
- 9.4 - 非抢先式多线程
- 10 - 完整的例子
- 10.1 - 数据描述
- 10.2 - 马尔可夫链算法
- 第二部分·表和对象
- 11 - 数据结构
- 11.1 - 数组
- 11.2 - 矩阵和多维数组
- 11.3 - 链接列表
- 11.4 - 队列和双重队列
- 11.5 - 套装和包包
- 11.6 - 字符串缓冲区
- 12 - 数据文件和持久性
- 12.1 - 序列化
- 12.1.1 - 保存没有循环的表
- 12.1.2 - 使用循环保存表
- 12.1 - 序列化
- 13 - Metatables和Metamethods
- 13.1 - 算术方法
- 13.2 - 关系式方法
- 13.3 - 图书馆定义的Metamethods
- 13.4 - 表访问Metamethods
- 13.4.1 - __indexMetamethod
- 13.4.2 - __newindexMetamethod
- 13.4.3 - 具有默认值的表
- 13.4.4 - 跟踪表访问
- 13.4.5 - 只读表
- 14 - 环境
- 14.1 - 使用动态名称访问全局变量
- 14.2 - 声明全局变量
- 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 - 弱表
- 17.1 - 记忆功能
- 17.2 - 对象属性
- 17.3 - 使用默认值重新访问表
- 第三部分·标准库
- 18 - 数学图书馆
- 19 - 表库
- 19.1 - 数组大小
- 19.2 - 插入和删除
- 19.3 - 排序
- 20 - 字符串库
- 20.1 - 模式匹配函数
- 20.2 - 模式
- 20.3 - 捕获
- 20.4 - 交易诀窍
- 21 - I / O库
- 21.1 - 简单I / O模型
- 21.2 - 完整的I / O模型
- 21.2.1 - 小型表演技巧
- 21.2.2 - 二进制文件
-
- 21.3 - 文件的其他操作
- 22 - 操作系统库
- 22.1 - 日期和时间
- 22.2 - 其他系统调用
- 23 - 调试库
- 23.1 - 内省设施
- 23.1.1 - 访问局部变量
- 23.1.2 - 访问Upvalues
- 23.1 - 内省设施
-
- 23.2 - 钩子
- 23.3 - 简介
- 第四部分·C API
- 24 - C API概述
- 24.1 - 第一个例子
- 24.2 - 堆栈
- 24.2.1 - 推动元素
- 24.2.2 - 查询元素
- 24.2.3 - 其他堆栈操作
-
- 24.3 - 使用C API进行错误处理
- 24.3.1 - 应用程序代码中的错误处理
- 24.3.2 - 库代码中的错误处理
- 24.3 - 使用C API进行错误处理
- 25 - 扩展您的申请
- 25.1 - 表操作
- 25.2 - 调用Lua函数
- 25.3 - 通用呼叫功能
- 26 - 从Lua打电话给C
- 26.1 - C函数
- 26.2 - C库
- 27 - 编写C函数的技巧
- 27.1 - 数组操作
- 27.2 - 字符串操作
- 27.3 - 在C函数中存储状态
- 27.3.1 - 书记官处
- 27.3.2 - 参考文献
- 27.3.3 - 升值
- 28 - C中的用户定义类型
- 28.1 - 用户数据
- 28.2 - Metatables
- 28.3 - 面向对象的访问
- 28.4 - 阵列访问
- 28.5 - 轻用户数据
- 29 - 管理资源
- 29.1 - 目录迭代器
- 29.2 - XML解析器
最后更新:周六7月28日14:07:44 -03 2018