Lua语法
Nginx编程需要用到Lua语言,因此我们必须先入门Lua的基本语法。
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。官网:https://www.lua.org/
1变量和循环
1.1数据类型
可以使用type()函数来判断一个变量的数据类型
> print(type("Hello world"))
string
> print(type(10.4*3))
number
1.2声明变量
lua声明变量时无需指定数据类型,与JavaScript类似,而是使用local来声明变量为局部变量
Lua中的table类型既可以作为数组,又可以作为Java中的map来使用。数组就是特殊的table,key是数组下标而已:
-- 声明字符串,可以单引号或者双引号
local str='hello'
-- 字符串拼接可以使用..
local str2='hello'.."world"
-- 声明数字
local num=666
-- 声明布尔类型
local flag=true
-- 声明数组
local arr={'java','python','lua'}
-- 声明table,类似java中的map
local map={name='cxk',age=114514}
lua中的数组下标从1开始,访问时与java类似
-- 访问数组,下标从1开始
print(arr[1])
-- 访问table
print(map['name'])
print(map.name)
1.3循环
对数组和table可以使用for循环进行遍历
- 遍历数组
-- 声明数组key为索引的table
local arr={'java','python','lua'}
--遍历数组
for index,value in ipairs(arr) do
print(index,value)
end
- 遍历普通table
-- 声明table
local map={name='jack',age=21}
-- 遍历table
for key,value in pairs(map) do
print(key,value)
end
2函数与条件控制
2.1函数
定义函数的语法:
function 函数名(argument1,argument2...,argumentn)
函数体
return 返回值
end
例如:定义一个函数用来遍历打印数组
function printArr(arr)
for i v in ipairs(arr) do
print(i,v)
end
end
2.2条件控制
类似Java的条件控制,例如if、else语法:
if(布尔表达式)
then
--[ 布尔表达式为 true 时执行该语句块 --]
else
--[ 布尔表达式为 false 时执行该语句块 --]
end
与java不同,布尔表达式中的逻辑运算是基于英文单词:
- 自定义一个函数,可以打印table,当参数为nil时,打印错误信息
function printArr(arr)
if not arr then
print('数组不能为空!')
end
for index, value in ipairs(arr) do
print(value)
end
end
(arr)
if not arr then
print(‘数组不能为空!’)
end
for index, value in ipairs(arr) do
print(value)
end
end