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

lua入门语法,包含安装,注释,变量,循环等

文章目录

  • LUA入门
    • 什么是lua
    • lua安装
    • 入门
    • lua的使用方式
    • 注释
    • 定义变量
    • lua中的数据类型
    • 流程控制
      • ifelse
      • while语法:
      • for
    • 函数
    • 模块

LUA入门

什么是lua

一种脚本语言,设计的目的是为了能够在一些应用程序提供灵活的扩展功能和定制功能。

lua安装

有linux版本的安装也有mac版本的安装。。我们采用linux版本的安装,首先我们准备一个linux虚拟机。

安装步骤,在linux系统中执行下面的命令。

curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz
tar zxf lua-5.3.5.tar.gz
cd lua-5.3.5
make linux test

注意:此时安装,有可能会出现如下错误:

在这里插入图片描述

此时需要安装lua相关依赖库的支持,执行如下命令即可:

yum install libtermcap-devel ncurses-devel libevent-devel readline-devel

此时再执行lua测试看lua是否安装成功

[root@localhost ~]# lua
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio

入门

创建hello.lua文件,内容为

编辑文件hello.lua

vi hello.lua

在文件中输入:

print("hello");

保存并退出。

执行命令

lua hello.lua

输出为:

Hello

效果如下:

在这里插入图片描述

lua的使用方式

  1. 交互式

直接在窗口输入输出,相当于命令行

lua -i

效果:

在这里插入图片描述

  1. 脚本式编程

将代码写到文件中,编译运行文件

创建一个lua文件,内容为

print("666")

执行

lua hello.lua

输出

在这里插入图片描述

注释

一行注释:两个减号是单行注释:

--

多行注释:

--[[多行注释多行注释--]]

定义变量

全局变量,在任意一个地方都可以看到,本地变量,在当前的文件,在代码块中才可以看到

-- 全局变量赋值
a=1
-- 局部变量赋值
local b=2 

如果变量没有初始化:则 它的值为nil 这和java中的null不同。

lua中的数据类型

Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。

数据类型描述
nil这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
boolean包含两个值:false和true。
number表示双精度类型的实浮点数
string字符串由一对双引号或单引号来表示
function由 C 或 Lua 编写的函数
userdata表示任意存储在变量中的C数据结构
thread表示执行的独立线路,用于执行协同程序
tableLua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。

实例:

print(type("Hello world"))      --> string
print(type(10.4*3))             --> number
print(type(print))              --> function
print(type(type))               --> function
print(type(true))               --> boolean
print(type(nil))                --> nil

流程控制

ifelse

语法:

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

示例:

在这里插入图片描述

while语法:

while(condition)
dostatements
end

实例:

在这里插入图片描述

for

语法: 1->10 1:exp1 10:exp2 2:exp3:递增的数量

for var=exp1,exp2,exp3 
do  <执行体>  
end  

示例:

在这里插入图片描述

函数

lua中也可以定义函数,类似于java中的方法。例如:

--[[ 函数返回两个值的最大值 --]]
function max(num1, num2)if (num1 > num2) thenresult = num1;elseresult = num2;endreturn result; 
end
-- 调用函数
print("两值比较最大值为 ",max(10,4))
print("两值比较最大值为 ",max(5,6))

执行之后的结果:

两值比较最大值为     10
两值比较最大值为     6

table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。

Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。

案例:

-- 初始化表
mytable = {}-- 指定值
mytable[1]= "Lua"-- 移除引用
mytable = nil

模块

(1)模块定义

模块类似于一个封装库,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。

创建一个文件叫module.lua,在module.lua中创建一个独立的模块,代码如下:

-- 文件名为 module.lua
-- 定义一个名为 module 的模块
module = {}-- 定义一个常量
module.constant = "这是一个常量"-- 定义一个函数
function module.func1()print("这是一个公有函数")
endlocal function func2()print("这是一个私有函数!")
endfunction module.func3()func2()
endreturn module

(2)require 函数

require 用于 引入其他的模块,类似于java中的类要引用别的类的效果。

用法:

require("<模块名>")
require "<模块名>"

两种都可以。

我们可以将上面定义的module模块引入使用,创建一个test_module.lua文件,代码如下:

-- test_module.lua 文件
-- module 模块为上文提到到 module.lua
require("module")print(module.constant)module.func3()
http://www.xdnf.cn/news/5521.html

相关文章:

  • spring boot3.0自定义校验注解:文章状态校验示例
  • 从攻击者角度来看Go1.24的路径遍历攻击防御
  • 数模分离颠覆未来:打造数字时代核心生产力引擎
  • 五、Hive表类型、分区及数据加载
  • 力扣HOT100之二叉树:101. 对称二叉树
  • 洛谷 P1955 [NOI2015] 程序自动分析
  • hdfs客户端操作-文件上传
  • LegoGPT,卡内基梅隆大学推出的乐高积木设计模型
  • 视觉-语言-动作模型:概念、进展、应用与挑战(下)
  • day18-数据结构引言
  • 【Python】UV:单脚本依赖管理
  • DVWA在线靶场-SQL注入部分
  • The Graph:区块链数据索引的技术架构与创新实践
  • maitrix-org/Voila-chat:端到端音频聊天模型
  • 如何判断IP是否被平台标记
  • 深入解读tcpdump:原理、数据结构与操作手册
  • YAFFS2 的 `yaffs_obj` 数据结构详解
  • JAVA EE_网络原理_数据链路层
  • R语言实战第5章(1)
  • 软考错题(四)
  • 小结:Syslog
  • 运用数组和矩阵对数据进行存取和运算——NumPy模块 之五
  • vue3+three 搭建平面上滚动旋转的几何体
  • 【深度学习】计算机视觉(18)——从应用到设计
  • 数据库笔记(1)
  • DeepWiki: Github的百科全书
  • vue实现与后台springboot传递数据【传值/取值 Axios 】
  • 基于大模型的甲状腺结节诊疗全流程预测与方案研究报告
  • C++ 状态模式详解
  • (网络)应用层协议-HTTPS