前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Lua 是一种轻量小巧的脚本语言...

Lua 是一种轻量小巧的脚本语言...

作者头像
小冷
发布2024-01-29 10:20:03
1040
发布2024-01-29 10:20:03
举报
文章被收录于专栏:小冷coding小冷coding

Nginx编程需要用到Lua语言,因此我们必须先入门Lua的基本语法。

初识Lua

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。官网:The Programming Language Lua

Lua经常嵌入到C语言开发的程序中,例如游戏开发、游戏插件等。

Nginx本身也是C语言开发,因此也允许基于Lua做拓展。

1 HelloWorld

CentOS7默认已经安装了Lua语言环境,所以可以直接运行Lua代码。

1)在Linux虚拟机的任意目录下,新建一个hello.lua文件

2)添加下面的内容

代码语言:javascript
复制
print("Hello World!")

3)运行

2 变量和循环

学习任何语言必然离不开变量,而变量的声明必须先知道数据的类型。

3.2.1.Lua的数据类型

Lua中支持的常见数据类型包括:

3 声明变量

Lua声明变量的时候无需指定数据类型,而是用local来声明变量为局部变量:

代码语言:javascript
复制
-- 声明字符串,可以用单引号或双引号,
local str = 'hello'
-- 字符串拼接可以使用 ..
local str2 = 'hello' .. 'world'
-- 声明数字
local num = 21
-- 声明布尔类型
local flag = true

Lua中的table类型既可以作为数组,又可以作为Java中的map来使用。数组就是特殊的table,key是数组下标:

代码语言:javascript
复制
-- 声明数组 ,key为角标的 table
local arr = {'java', 'python', 'lua'}
-- 声明table,类似java的map
local map =  {name='Jack', age=21}
Lua中的数组角标是从1开始,访问的时候与Java中类似:
-- 访问数组,lua数组的下标从1开始
print(arr[1])

Lua中的table可以用key来访问:

代码语言:javascript
复制
-- 访问table
print(map['name'])
print(map.name)

4 循环

对于table,我们可以利用for循环来遍历。不过数组和普通table进行遍历略有差异。

遍历数组:

代码语言:javascript
复制
-- 声明数组 key为索引的 table
local arr = {'java', 'python', 'lua'}
-- 遍历数组
for index,value in ipairs(arr) do
    print(index, value) 
end

遍历普通table

代码语言:javascript
复制
-- 声明map,也就是table
local map = {name='Jack', age=21}
-- 遍历table
for key,value in pairs(map) do
   print(key, value) 
end

5 条件控制、函数

Lua中的条件控制和函数声明与Java类似。

函数

定义函数的语法:

代码语言:javascript
复制


function 函数名( argument1, argument2..., argumentn)
    -- 函数体
    return 返回值
 end

例如,定义一个函数,用来打印数组:

代码语言:javascript
复制
function printArr(arr)
    for index, value in ipairs(arr) do
        print(value)
    end
end

条件控制

类似Java的条件控制,例如if、else语法:

代码语言:javascript
复制


if(布尔表达式)
then
   --[ 布尔表达式为 true 时执行该语句块 --]
else
   --[ 布尔表达式为 false 时执行该语句块 --]
end
与java不同,布尔表达式中的逻辑运算是基于英文单词:

案例

需求:自定义一个函数,可以打印table,当参数为nil时,打印错误信息

代码语言:javascript
复制
function printArr(arr)
    if not arr then
        print('数组不能为空!')
    end
    for index, value in ipairs(arr) do
        print(value)
    end
end

Lua脚本的优点有很多,包括:

  • 轻量级:Lua语言本身非常轻量级,语法简洁,易于学习,可以让程序更加快速地开发。
  • 可扩展性:Lua脚本可以被嵌入到应用程序中,并且可以通过C/C++等语言进行扩展,使得应用程序更加灵活和易于维护。
  • 跨平台性:Lua脚本可以在不同的操作系统和平台上运行,使得应用程序更加易于部署和维护。
  • 解释型语言:Lua脚本是解释型语言,不需要编译就可以直接运行,使得调试和测试更加方便。
  • 面向对象编程:Lua脚本支持面向对象编程,可以定义类和对象,支持继承和多态等面向对象的特性。
  • 社区支持:Lua脚本有一个活跃的社区,提供了大量的第三方库和工具,可以方便地实现各种功能
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小冷coding 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档