Javascript is required
快速上手Lua

认知

http://www.lua.org

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)

基本语法

andbreakdoelse
elseifendfalsefor
functionifinlocal
nilnotorrepeat
returnthentrueuntil
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

参考

https://wiki.jikexueyuan.com/project/lua/