1. 安装
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
注意:make linux test
时报错
解决办法:缺少 libreadline-dev
依赖包,安装该依赖即可:
sudo apt-get update
sudo apt-get install libreadline-dev
2. 参考文档
3. 基本用法
- 变量默认是全局(即使是在语句块或者函数里也是全局变量,除非声明为
local
, 局部变量作用域从声明位置开始到所在语句块结束,需要注意:函数里的全局变量只有在调用函数后生效),访问未初始化的变量,得到nil
。 - 以下划线开头连接一串大写字母 被保留用于lua内部全局变量,如
_VERSION
。 - 数据类型:
nil
(表示无效值)、boolean
(只有 false 和 nil 为 false,其他包括0均表示true)、number
(默认只有double
类型)、string
、function
(由C或lua编写的函数)、userdata
(存储在变量中的C数据结构)、thread
、table
- lua 里表的默认初始索引为1
-- 这是单行注释
--[[
这是多行注释
多行注释
--]]
-- 删除全局变量
b = nil
-- 判断变量是否存在(type 返回的是字符串)
type(X)=="nil"
-- 单引号或双引号表示 string,也可以用 [[]]表示一块字符串
html = [[
<html>
<head><head>
<body>
</body>
</html>
]]
-- 数字字符串进行算术操作时,会尝试将数字字符串转换为数字
print("2"+6) -- 输出8.0
-- 字符串连接
print("a" .. "b")
-- 字符串长度
#str
-- table用法
-- 创建空表
a = {}
-- 初始化
b = {"a","b","c"}
-- 添加数据
a["key"] = "value"
a[20] = 10
for k, v in pairs(a) do
print(k .. ":" .. v)
end
-- 访问索引
table1[1]
table1.key -- 当索引为字符串时
gettable_event(table1, 1)
-- function
-- 匿名函数
function(key, val)
return key..":"..val;
end
-- 多变量同时赋值
a, b = 10, 5
-- 交换a,b的值
a, b = b, a -- lua会先计算右边的值
循环语句
while(true)
do
print("循环")
end
-- var 从 exp1变化到exp2,步长为exp3
for var=exp1,exp2,exp3 do -- 这三个表达式只计算一次, exp3默认为1
print(var)
end
-- 泛型for循环:通过迭代器函数遍历所有值
t = {"a", "b", "c"}
for i, v in ipairs(t) do
print(i,v)
end
repeat
print("循环")
until(true)
-- goto: 将控制流程无条件转向被标记的语句处
local a = 1
::label:: print("--- goto label ---")
a = a + 1
if a < 3 then
goto label
end
函数
- 默认为全局函数,用
local
声明局部函数
-- 可变参数
function add(...)
result = 0
local arg = {...}
for i, v in ipairs(arg) do
result = result + v
end
print("总共传入 ".. #arg .. " 个参数")
return result, #arg
end
运算符
a==b
a~=b
a^3
-- and or not