前言
- 1993 年在
巴西
里约热内卢天主教大学( Pontifical Catholic University of Rio de Janeiro inBrazil )诞生了一门编程语言,发明者是该校的三位研究人员,他们给这门语言取 了个浪漫的名字—— Lua ,在葡萄牙语里代表美丽的月亮
。事实证明她没有糟蹋这个优美 的单词,Lua 语言正如它名字所预示的那样成长为一门简洁、优雅且富有乐趣的语言。 - Lua 从一开始就是作为一门方便嵌入(其它应用程序)并可扩展的轻量级脚本语言来设 计的,因此她一直遵从着
简单、小巧、可移植、快速
的原则,官方实现完全采用 ANSI C 编 写,能以 C 程序库的形式嵌入到宿主程序中。LuaJIT 2 和标准 Lua 5.1 解释器采用的是著 名的 MIT 许可协议。 - 前端:正由于上述特点,所以 Lua 在
游戏开发、机器人控制、分布式应用、图像处理、生物 信息学
等各种各样的领域中得到了越来越广泛的应用。其中尤以游戏开发为最,许多著名 的游戏,比如 Escape from Monkey Island、World of Warcraft、大话西游,都采用了 Lua 来配合引擎完成数据描述、配置管理和逻辑控制等任务。即使像 Redis 这样中性的内存键 值数据库也提供了内嵌用户 Lua 脚本的官方支持。 - 后端:Skynet 是一个为
网络游戏服务器
设计的轻量框架。但它本身并没有任何为网络游戏业 务而特别设计的部分,所以尽可以把它用于其它领域。 OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精 良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展 性极高的动态 Web 应用、Web 服务和动态网关。使用 Lua 脚本语言调动 Nginx 支持的 各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性 能 Web 应用系统。 - Lua更多介绍见维基百科
学习资料推荐
- 首先想到的就是菜鸟教程:Lua教程
环境安装
官方推荐的方法请点击跳转:http://luadist.org/
Linux
curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz
tar zxf lua-5.3.0.tar.gz
cd lua-5.3.0
make linux test
make install
Windows
Lua for Windows v5.1.5-52 Released
Lua基本语法
交互式编程
- 与python类似,使用
lua
或lua -i
即可进入交互式环境
~ % lua
Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
~ % lua -i
Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
脚本式编程
与python或shell、perl一样,定义如下的文件,即可使用lua hello.lua
来运行文件!如果想使用./hello.lua
的格式,请记得给予权限(没关系,失败了加上就行了!)
ubuntu@ubuntu ~ % cat hello.lua [0]
#!/usr/local/bin/lua
print("hello world!")
print("你好呀,我是·Lua")
ubuntu@ubuntu ~ % lua hello.lua [0]
hello world!
你好呀,我是·Lua
注释
- 注意下面的格式,与c语言、python等对比即可!
#!/usr/local/bin/lua
--print("hello world!")
print("你好呀,我是·Lua")
--[[
print("hello world!")
print("你好呀,我是·Lua")
--]]
全局变量
在默认情况下,变量总是认为是全局的。
全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil。
因此,如果想删除一个全局变量,只需要将变量赋值为nil。
Lua数据类型
数据类型 | 描述 |
---|---|
nil | 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。 |
boolean | 如java中的,包含两个值:false和true。 |
number | 表示双精度类型的实浮点数 |
string | 字符串由一对双引号或单引号来表示 |
function | 由 C 或 Lua 编写的函数 |
userdata | 表示任意存储在变量中的C数据结构 |
thread | 表示执行的独立线路,用于执行协同程序 |
table | Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。 在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。 |
ubuntu@ubuntu ~ % cat hello.lua [0]
#!/usr/local/bin/lua
print("Lua数据类型测试")
print(type("Hello world"))
print(type(10.4*3))
print(type(print))
print(type(type))
print(type(true))
print(type(nil))
print(type(type(X)))
ubuntu@ubuntu ~ % lua hello.lua [0]
Lua数据类型测试
string
number
function
function
boolean
nil
string
更多知识
- 查看别处资料吧!
后记
Lua你用了多久!