当前位置: 首页 > news >正文

Lua语法入门


注意:文章将持续更新完善

文章目录

  • 一. 初识Lua
  • 二. HelloWorld
  • 三. Lua的数据类型
  • 四. 变量
  • 五. 循环
  • 六. 函数
  • 七. 条件控制


一. 初识Lua

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。官网:点击跳转
请添加图片描述
Lua经常嵌入到C语言开发的程序中,例如游戏开发、游戏插件等。
Nginx本身也是C语言开发,因此也允许基于Lua做拓展,列如结合我们的Openresty实现多级缓存。

二. HelloWorld

CentOS7默认已经安装了Lua语言环境,所以可以直接运行Lua代码。
(1)在Linux虚拟机的任意目录下,新建一个hello.lua文件
请添加图片描述
(2)添加下面的内容

print("Hello World!")  

(3)运行
请添加图片描述

三. Lua的数据类型

Lua中支持的常见数据类型包括:
请添加图片描述
另外,Lua提供了type()函数来判断一个变量的数据类型:
请添加图片描述

四. 变量

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

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

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

-- 声明数组 ,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来访问:

-- 访问table
print(map['name'])
print(map.name)

五. 循环

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

-- 声明数组 key为索引的 table
local arr = {'java', 'python', 'lua'}
-- 遍历数组
for index,value in ipairs(arr) doprint(index, value) 
end

遍历普通table

-- 声明map,也就是table
local map = {name='Jack', age=21}
-- 遍历table
for key,value in pairs(map) doprint(key, value) 
end

六. 函数

定义函数的语法:

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

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

function printArr(arr)for index, value in ipairs(arr) doprint(value)end
end

七. 条件控制

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

if(布尔表达式)
then--[ 布尔表达式为 true 时执行该语句块 --]
else--[ 布尔表达式为 false 时执行该语句块 --]
end

与java不同,布尔表达式中的逻辑运算是基于英文单词:
请添加图片描述

http://www.lryc.cn/news/7248.html

相关文章:

  • 华为OD机试真题JAVA实现【最小步骤数】真题+解题思路+代码(20222023)
  • 预检请求OPTIONS
  • 引入短信服务发送手机验证码进行安全校验
  • opencv绘制直线
  • Seata源码学习(五)- Seata服务端(TC)源码解读
  • 低版本jQuery导致XSS Nuclei FUZZ POC
  • 【Linux】进程的描述组织与进程状态
  • 8.2.1.1 WHERE 子句优化
  • 拆个微波炉,分析一下电路
  • DM8:DMDSC共享存储集群搭建-共享存储绑定
  • Spark OOM问题常见解决方式
  • 【Calcite源码学习】ImmutableBitSet介绍
  • RabbitMQ相关概念介绍
  • 在jenkins容器内部使用docker
  • 分布式事务解决方案
  • 2022黑马Redis跟学笔记.实战篇(三)
  • hadoop环境新手安装教程
  • 数据结构与算法基础-学习-11-线性表之链栈的初始化、判断非空、压栈、获取栈长度、弹栈、获取栈顶元素
  • Hive内置函数
  • Git如何快速入门
  • netcore构建webservice以及调用的完整流程
  • Mysql事务基础(解析)
  • 2023 年首轮土地销售活动来了 与 The Sandbox 一起体验「体素狂热」!
  • vue AntD中栅格布局的四种大小xs,sm,md,lg
  • window.open()打开窗口全屏
  • VFIO软件依赖——VFIO协议
  • C/C++【内存管理】
  • 第8篇:Java编程语言的8大优势
  • STM32定时器实现红外接收与解码
  • 18- Adaboost梯度提升树 (集成算法) (算法)