工程师了解的Lua语言

news2025/1/9 2:14:51

1、关于lua语言

        lua语言是用于嵌入式领域当中的一门脚本语言,其实在大学期间,我也没有接触过这门语言,但是在未来的发展之路当中,需要用到这门语言,所以在我的知识库当中添加这门语言知识是必要而且重要的,但是对于有基础的同学来说,学习一门语言其实大概思路都是差不多的,我们需要知道这门语言的基本数据类型,语法,循环结构,条件判断结构,那么这些基本了解的东西就了解得差不多了,相比其他语言来说,lua语言相比较简单,如果已经有了其他语言的概念和知识之后,学习这门语言来说相对比较容易。

2、lua语言的数据类型

        lua语言的数据类型的话,和其他语言都是差不多的,相信大多数人都学习过c语言这门编程语言,那么在lua语言当中呢,也有相同的数据类型,Lua 有 8 种基本数据类型:nilbooleannumberstringfunctionuserdatathreadtable

  • 变量可以存储任意一种类型的值

        学习一门语言,就是和其他语言进行对比学习,这样理解起来很容易,反正都是编程语言,大体逻辑基本一致。

        lua语言当中的布尔类型和c语言当中一致,就是ture ,false,相信大部分都能理解

        数值类型,拿c语言来说,分为整型int,浮点型float,浮点又分为单精度和双精度double,在lua语言当中,没有细分那么多,总的数值类型就一个,数值型(number)为什么和c语言的不一样呢,这是因为在lua语言当中,我们申请变量的时候,申请的变量会根据赋予的值类型默认当前值的类型,不像c语言当中一样,需要自己定义数据类型,并且这里面的数据类型转换也是一样的,会根据赋予的值转换数据类型,但是和c语言当中一样,字符型的数据类型,不能转换为数值型,否则会报错

        对于空类型来说,在c语言当中是null代表空指针,大多数情况下都是指针没有指向任何实际地址的表示,但是在lua当中,nil是指空,也就是没有的意思,通常用在表当中,在表当中表示不存在的键和已经删除的键。

3、lua语言的变量

        在c语言当中呢,我们定义一个变量需要给变量定义数据类型,但是在lua当中呢,我们定义变量的时候就不需要,在lua当中会自动根据赋予的值类型来给变量指定数据类型,那么在我们实际的操作过程当中,只需要用一个local来表示这是一个局部变量就可以了,当然有人可能会有疑问,如果说我的local表示的这个局部变量是没有作用域来包含的,那么这个局部变量和全局变量没有什么区别啊,这种变量是全局变量还是局部变量呢,看下面这个代码

-- 文件 test.lua
local x = 10  -- 文件级局部变量

function foo()
    print(x)  -- 可以访问 x
end

foo()  --> 10
print(x)  --> 10

上面这个代码当中呢  x=10是一个没有作用域包含的局部变量,就是我上面说的那种情况,但是你仔细思考,这个局部变量的作用域是不是代码开始到代码结束呢,那么这个的作用域是不是和全局变量一样了,哈哈哈。如果你有困惑,那么我直接解答了,如果说用local的变量,那么这个变量就是一个局部变量,只不过上面代码当中的这个变量是一个特殊情况,只是作用域和全局变量一样,但是还是局部变量,相对于全局变量,这种作用域是整个文件的局部变量是不能被其他文件所访问的,而全局变量能够被其他文件访问使用。 

4、lua语言的循环

        在c语言当中我们循环,for,while,do--while,在lua语言当中也有三个循环,分别是for,while,repeat--until, 这里就必须要注意了,两种语言在编写这种语言的风格不太一样,所以相对于学习的过程来说会有一些不太一样。

        lua当中的for循环有两种形式,一种是数值型for循环,一种是泛型for循环,下面举两个例子

1、数值型for循环

for i = 1, 5 do
    print(i)
end

用途:数值型for循环主要是用于我们来进行数值循环的时候用的,结构如下:

for 变量 = 初始值, 结束值, 步长 do
    -- 循环体
end

        在这种结构下,初始化是赋予变量开始循环的初始值,结束值是当初始值开始慢慢相加的时候,会判断初始值<=结束值,如果说比较结果为false,那么循环结束

2、泛型for循环

local t = {10, 20, 30}
for i, v in ipairs(t) do
    print(i, v)
end

         用途:主要是用于在表的遍历和数组这些数据结构的

        结构如下:

for 变量1, 变量2, ... in 迭代器 do
    -- 循环体
end

        在上面这个代码当中,迭代器一般使用ipairs或者pairs

lua里面的while循环

local i = 1
while i <= 5 do
    print(i)
    i = i + 1
end

 lua里面的repeat- until循环

local i = 1
repeat
    print(i)
    i = i + 1
until i > 5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2272537.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DINO-X环境搭建推理测试

引子 开放世界检测&#xff0c;前文也写OV-DINO&#xff08;感兴趣的童鞋&#xff0c;请移步OV-DINO开放词检测环境安装与推理-CSDN博客&#xff09;。这不&#xff0c;DINO系列又更新了。OK&#xff0c;那就让我们开始吧。 一、模型介绍 IDEA 开发了一个通用物体提示来支持无…

List ---- 模拟实现LIST功能的发现

目录 listlist概念 list 中的迭代器list迭代器知识const迭代器写法list访问自定义类型 附录代码 list list概念 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向链表结构&#xff0c;双向链表中每个元素…

STM32-笔记37-吸烟室管控系统项目

一、项目需求 1. 使用 mq-2 获取环境烟雾值&#xff0c;并显示在 LCD1602 上&#xff1b; 2. 按键修改阈值&#xff0c;并显示在 LCD1602 上&#xff1b; 3. 烟雾值超过阈值时&#xff0c;蜂鸣器长响&#xff0c;风扇打开&#xff1b;烟雾值小于阈值时&#xff0c;蜂鸣器不响…

VUE3配置后端地址,实现前后端分离及开发、正式环境分离

新建.env.development及.env.production .env.development 指定开发环境地址.env.production 指定生产环境地址 格式如下 VITE_APP_BASE_APIhttp://localhost:8070只需要在对应文件写入对应的后端地址即可 修改env.d.ts /// <reference types"vite/client" /…

win32汇编环境,在窗口程序中画五边形与六边形

;运行效果 ;win32汇编环境,在窗口程序中画五边形与六边形 ;展示五边形与六边形的画法 ;将代码复制进radasm软件里,直接编译可运行.重要部分加备注。 ;下面为asm文件 ;>>>>>>>>>>>>>>>>>>>>>>>>>…

Java Web开发进阶——Spring Boot基础

Spring Boot是基于Spring框架的新一代开发框架&#xff0c;旨在通过自动化配置和简化的开发方式提升生产效率。它将复杂的配置抽象化&#xff0c;让开发者专注于业务逻辑实现&#xff0c;而无需关注繁琐的基础配置。 1. Spring Boot简介与优势 Spring Boot 是 Spring 家族中的…

【Linux】文件系统命令

目录 文件系统命令 Linux文件系统 文件操作相关命令 文件系统命令 磁盘文件系统&#xff1a;指本地主机中实际可以访问到的文件系统&#xff0c;包括硬盘、CD-ROM、DVD、USB存储器、磁盘阵列等。常见文件系统格式有&#xff1a;autofs、coda、Ext&#xff08;Extended File…

关于变电站及线路接线情况展示的一些想法

以前总项目的时候总习惯于给变电站画个轮廓和接线点&#xff0c;要不就是给变电站3D建模。费时、费力效果还不一定好!其实&#xff0c;像上图一样线路搭配高清影像效果是不是会更好&#xff1f;尤其变电站区域可以使用航飞0.2米左右的数据&#xff0c;基本上站内设备都能看清了…

【OceanBase】使用 Superset 连接 OceanBase 数据库并进行数据可视化分析

文章目录 前言一、前提条件二、操作步骤2.1 准备云主机实例2.2 安装docker-compose2.3 使用docker-compose安装Superset2.3.1 克隆 Superset 的 GitHub 存储库2.3.2 通过 Docker Compose 启动 Superset 2.4 开通 OB Cloud 云数据库2.5 获取连接串2.6 使用 Superset 连接 OceanB…

开源平台Kubernetes的优势是什么?

Kubernetes 是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;方便进行声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统&#xff0c;其服务、支持和工具的使用范围广泛。 Kubernetes 这个名字源于希腊语&#xff0c;意…

“大数据+职业本科”:VR虚拟仿真实训室的发展前景

在新时代背景下&#xff0c;随着科技的飞速进步和产业结构的不断升级&#xff0c;职业教育正迎来前所未有的变革。“大数据职业本科”的新型教育模式&#xff0c;结合VR&#xff08;虚拟现实&#xff09;技术的广泛应用&#xff0c;为实训教学开辟了崭新的道路&#xff0c;尤其…

flask实现国外大学生志愿者管理服务系统【英文】

完整源码项目包获取→点击文章末尾名片&#xff01;

lambda用法及其原理

目录 lambda形式lambda用法1.sort降序2.swap3.捕捉列表 习题解题 lambda形式 [capture-list](parameters)->return type{function boby}[capture-list]&#xff1a;[捕捉列表]用于捕捉函数外的参数&#xff0c;可以为空&#xff0c;但不能省略&#xff1b;(parameters) &am…

Street Surf 的学习

数据结构和组织 定义了一个 scenebank 的 数据结构。 这篇文章定义了两种 采样 方式&#xff1a; JointFramePixelDataset 【任意帧中选择任意的 Pixel】PixelDataset [从固定的帧中选择任意的Pixel]ImagePatchDataset [基于image patch 的采样方式&#xff0c;可以用于 mono…

IP查询于访问控制保护你我安全

IP地址查询 查询方法&#xff1a; 命令行工具&#xff1a; ①在Windows系统中&#xff0c;我们可以使用命令提示符&#xff08;WINR&#xff09;查询IP地址&#xff0c;在弹窗中输入“ipconfig”命令查看本地网络适配器的IP地址等配置信息&#xff1b; ②在Linux系统中&…

大模型 LangChain-LangGraph 初探

大模型 LangChain-LangGraph 初探 一、LangGraph 简介 LangGraph&#xff08;https://langchain-ai.github.io/langgraph/&#xff09;是一个用于构建有状态、多参与者应用程序的库&#xff0c;在创建代理和多代理工作流方面发挥着重要作用。与其他大语言模型&#xff08;LLM…

yolov5核查数据标注漏报和误报

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、误报二、漏报三、源码总结 前言 本文主要用于记录数据标注和模型预测之间的漏报和误报思想及其源码 提示&#xff1a;以下是本篇文章正文内容&#xff0c;…

【Linux】进程间通信(一)

目录 一、进程间通信1.1 进程间通信目的1.2 理解进程间通信1.3 进程间通信发展1.4 进程间通信分类 二、管道2.1 什么是管道2.2 管道的原理2.3 匿名管道2.3.1 pipe函数2.3.2 匿名管道的实现2.3.3 匿名管道小结2.3.3.1 匿名管道的四种情况2.3.3.2 匿名管道的五种特性 2.3.4 匿名管…

【QT-QTableView实现鼠标悬浮(hover)行高亮显示+并设置表格样式】

1、自定义委托类 HoverDelegate hoverdelegate.h #ifndef HOVERDELEGATE_H #define HOVERDELEGATE_H#include <QObject> #include <QStyledItemDelegate>class hoverdelegate : public QStyledItemDelegate {Q_OBJECT // 添加 Q_OBJECT 宏public:explicit hoverde…

Elasticsearch:基础概念

这里写目录标题 一、什么是Elasticsearch1、基础介绍2、什么是全文检索3、倒排索引4、索引&#xff08;1&#xff09;创建索引a 创建索引基本语法b 只定义索引名&#xff0c;setting、mapping取默认值c 创建一个名为student_index的索引&#xff0c;并设置一些自定义字段 &…