快速上手Lua
Lua
认知
Lua 是一个小巧精妙的脚本语言,诞生于巴西的大学实验室,这个名字在葡萄牙语里的含义是“美丽的月亮”。从作者所在的国家来看,NGINX 诞生于俄罗斯,Lua 诞生于巴西,OpenResty 诞生于中国,这三门同样精巧的开源技术都出自金砖国家,而不是欧美,也是挺有趣的一件事
下载安装
Mac
brew install lua
brew install luarocks
luarocks install luasocket
➜ ~ lua
Lua 5.3.5 Copyright (C) 1994-2018 Lua.org, PUC-Rio
基础
注释
-- 这是一个注释
-- 注释Name
name = 'Taoya'
print(name)
基本语法
and | break | do | else |
---|---|---|---|
elseif | end | false | for |
function | if | in | local |
nil | not | or | repeat |
return | then | true | until |
while |
变量
变量就是给一块内存区域赋予的一个名字。变量使得在程序中就可以修改或读取相应的内存区域中的内容。它可以代表各种不同类型的值,包括函数与表。
-- 初始化变量
a = 10
b = 30
print(a, b)
-- 交换变量
c,d = b,a
print(c, d)
数据类型
Lua是动态类型编程语言,变量没有类型,只有值才有。
值类型 | 描述 |
---|---|
nil | 用于区分值是否有数据,nil 表示没有数据。 |
boolean | 布尔值,有真假两个值,一般用于条件检查。 |
number | 数值,表示实数(双精度浮点数)。 |
string | 字符串。 |
function | 函数,表示由 C 或者 Lua 写的方法。 |
userdata | 表示任意 C 数据。 |
thread | 线程,表示独立执行的线程,它被用来实现协程。 |
table | 表,表示一般的数组,符号表,集合,记录,图,树等等,它还可以实现关联数组。它可以存储除了 nil 外的任何值。 |
-- 字符串
a = "Hi.."
print(a)
print(type(a)) -- string
-- 布尔值
b = false
print(b)
print(type(b)) -- boolean
-- 数字
c = 123
print(c)
print(type(c)) -- number
-- 函数
function d()
end
print(d)
print(type(d)) -- function
Lua有一个type函数, 可以知道变量的类型。
字符串
在 Lua 中,字符串是不可变的值,如果你要修改某个字符串,就等于创建了一个新的字符串。这种做法显然有利有弊:好处是即使同一个字符串出现了很多次,在内存中也只有一份;但劣势也很明显,如果你想修改、拼接字符串,会额外地创建很多不必要的字符串。
操作
循环/判断/循环控制/
while 循环
for 循环
repeat..until 循环
嵌套循环
判断
if ()
then
-- Do
end
if()
then
-- Do
else
-- Do
end
if()
then
-- Do
if()
then
-- DO
end
end
函数
函数是Lua一等公民。 可以把函数放到一个变量中。
function Main()
print("Hi!")
end
// Or 两个函数等价
Main = function()
end
参数
function add(a,b)
return a+b
end
res = add(7, 9)
print(res) -- 16