天天看点

用lua做nginx扩展开发1

lua开发基础语法

安装

sudo apt install lua3      

简单语法

-- 返回arg1的阶乘
function demo0(arg1)
    if arg1==1 then
        return 1       
    end
    return arg1*demo0(arg1-1)
end
-- 运行结果为 
-- root@MSI:/home/chaojilaji/lua-demo# lua demo.lua 
-- 3628800

-- 连接元组
function demo1()
    a = {
        "1","2","3","4"
    }
    return table.concat( a, ", ", 1, 4 )
end
-- 注意:a的下标是从1开始的
-- 运行结果为
-- root@MSI:/home/chaojilaji/lua-demo# lua demo.lua 
-- 1, 2, 3, 4

-- 循环
function demo2()
    a = {
        1,2,3,4
    }
    for key, value in pairs(a) do
        print(key .. " : " .. value)
    end
end
-- 运行结果为
-- root@MSI:/home/chaojilaji/lua-demo# lua demo.lua 
-- 1 : 1
-- 2 : 2
-- 3 : 3
-- 4 : 4

-- 变量 local 表示局部变量,如果不标记local则表示未全局变量
function demo3()
    do
        local a = 1
        b = 2
    end
    print(a,b)
end

-- 匿名函数
function demo4(arg1)
    a = function (arg2)
            return demo0(arg2)
        end
    print(a(arg1),arg1)
end

-- while 循环
function demo5()
    cnt = 3
    while cnt>0 do
        print(cnt)
        cnt  = cnt - 1
    end
end

-- 条件判断语句
function demo6(arg1)
    if arg1 == 1 then
        return 50
    elseif arg1 == 2 then
        return 2*100
    else
        return arg1
    end
end

-- 函数可作为参数传入函数
function demo7(arg1,arg2)
    return arg2(arg1)
end

-- 可变参数
function demo8(...)
    print(select("#",...))
    local arg1 = {...}
    for i, value in pairs(arg1) do
        print(i .. " : " .. value)
    end
end

-- 不等于 ~=
function demo9(arg1, arg2)
    print(arg1 == arg2)
    print(arg1 ~= arg2)
    print(arg1 >= arg2)
    print(arg1 <= arg2)
end

-- or and not
function demo10(arg1,arg2)
    print(arg1 == arg2 or arg1 > arg2)
    print(arg1 <= arg2 and arg1 == arg2)
end

-- 字符串处理函数 string
function demo12(arg1 )
    print(string.gsub( arg1,"a", "c",3))
    print(string.find( arg1,"a",1 ))
    print(string.reverse( arg1 ))
end


a = 'dasadasda'
b = "ewqeqewqewq"
c = [[zxczcxzczcxz]]      
下一篇: Django_CBV