Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。
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
Mac OS X 系统上安装
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 macosx test
make install
运行方式
1.交互式编程
Lua 交互式编程模式可以通过命令 lua -i 或 lua 来启用:
$ lua -i
$ Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> print("Hello World!")
Hello World!
>
2.脚本编程
hello.lua 的脚本文件中:
print("Hello World!")
print("www.runoob.com")
运行:
$ lua test.lua
Hello World!
www.runoob.com
3.将代码修改为如下形式来执行脚本
#!/usr/local/bin/lua
print("Hello World!")
print("www.runoob.com")
运行:
./test.lua
Hello World!
www.runoob.com
变量
全局变量 : 在默认情况下,变量总是认为是全局的。
局部变量 : 格式 “local 变量名” 为局部变量。
变量的默认值均为 nil。
赋值语句
赋值是改变一个变量的值和改变表域的最基本的方法。
Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。
demo:a, b = 10, 12 ----> a=10; b=12
我们可以这样进行交换变量的值:
x, y = y, x -- swap 'x' for 'y'
a[i], a[j] = a[j], a[i] -- swap 'a[i]' for 'a[j]'
当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:
a. 变量个数 > 值的个数 按变量个数补足nil
b. 变量个数 < 值的个数 多余的值会被忽略
数据类型
Lua中有8个基本类型分别为:nil、boolean、number、string、userdata、function、thread和table。
nil 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
boolean 包含两个值:false和true。
number 表示双精度类型的实浮点数。
string 字符串由一对双引号或单引号来表示。
function 由 C 或 Lua 编写的函数。
userdata 表示任意存储在变量中的C数据结构。
thread 表示执行的独立线路,用于执行协同程序。
table Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。
string类型
1.单双引号的字符串。
string1 = "this is string1"
string2 = 'this is string2'
2.用方括号 “[[]]” 来表示”一块”字符串。
html = [[
<html>
<head></head>
<body>
<a href="http://www.ooob.com/">lua教程</a>
</body>
</html>
]]
print(html)
3.在对一个数字字符串上进行算术操作时,Lua 会尝试将这个数字字符串转成一个数字:
> print("2" + 6)
8.0
> print("2" + "6")
8.0
> print("2 + 6")
2 + 6
table类型
1.创建表
-- 创建一个空的 table
local tbl1 = {}
-- 直接初始表
local tbl2 = {"apple", "pear", "orange", "grape"}
2.Lua里表的默认初始索引一般以 1 开始.
-- table_test2.lua 脚本文件
local tbl = {"apple", "pear", "orange", "grape"}
for key, val in pairs(tbl) do
print("Key", key)
end
脚本执行结果为:
$ lua table_test2.lua
Key 1
Key 2
Key 3
Key 4
3.table 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的 table 都是 nil。