工程师了解的Lua语言

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
endfoo()  --> 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 doprint(i)
end

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

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

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

2、泛型for循环

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

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

        结构如下:

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

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

lua里面的while循环

local i = 1
while i <= 5 doprint(i)i = i + 1
end

 lua里面的repeat- until循环

local i = 1
repeatprint(i)i = i + 1
until i > 5

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

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

相关文章

Mac iTerm2集成DeepSeek AI

1. 去deepseek官网申请api key&#xff0c;DeepSeek 2. 安装iTerm2 AI Plugin插件&#xff0c;https://iterm2.com/ai-plugin.html&#xff0c;插件解压后直接放到和iTerms相同的位置&#xff0c;默认就在/Applications 下 3. 配置iTerm2 4. 重启iTerm2,使用快捷键呼出AI对话…

MySQL数据库笔记——多版本并发控制MVCC

大家好&#xff0c;这里是Good Note&#xff0c;关注 公主号&#xff1a;Goodnote&#xff0c;本文详细介绍MySQL的并发控制&#xff1a;多版本并发控制MVCC。 文章目录 背景介绍数据库并发控制——锁机制悲观锁和乐观锁悲观锁乐观锁 数据库并发控制——MVCC 的引入MVCC 和锁机…

电脑里msvcr120.dll文件丢失怎样修复?

电脑里msvcr120.dll文件丢失的修复指南 在电脑的日常使用中&#xff0c;我们可能会遇到各种各样的系统文件丢失问题&#xff0c;其中msvcr120.dll文件的丢失就是较为常见的一种。作为一名在软件开发领域深耕多年的从业者&#xff0c;我将为大家详细解析msvcr120.dll文件的重要…

今日头条ip属地根据什么显示?不准确怎么办

在今日头条这样的社交媒体平台上&#xff0c;用户的IP属地信息对于维护网络环境的健康与秩序至关重要。然而&#xff0c;不少用户发现自己的IP属地显示与实际位置不符&#xff0c;这引发了广泛的关注和讨论。本文将深入探讨今日头条IP属地的显示依据&#xff0c;并提供解决IP属…

【Rust自学】10.3. trait Pt.1:trait的定义、约束与实现

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 题外话&#xff1a;trait的概念非常非常非常重要&#xff01;&#xff01;&#xff01;整个第10章全都是Rust的重难点&#xff01;&#x…

大白话拆解——多线程中关于死锁的一切(七)(已完结)

前言&#xff1a; 25年初&#xff0c;这个时候好多小伙伴都在备战期末 小编明天还有一科考试&#xff0c;日更一篇&#xff0c;今天这篇一定会对小白非常有用的&#xff01;&#xff01;&#xff01; 因为我们会把案例到用代码实现的全过程思路呈现出来&#xff01;&#xff…

GitLab集成Runner详细版--及注意事项汇总【最佳实践】

一、背景 看到网上很多用户提出的runner问题其实实际都不是问题&#xff0c;不过是因为对runner的一些细节不清楚导致了误解。本文不系统性的介绍GitLab-Runner&#xff0c;因为这类文章写得好的特别多&#xff0c;本文只汇总一些常几的问题/注意事项。旨在让新手少弯路。 二、…

《数据结构》期末考试测试题【中】

《数据结构》期末考试测试题【中】 21.循环队列队空的判断条件为&#xff1f;22. 单链表的存储密度比1&#xff1f;23.单链表的那些操作的效率受链表长度的影响&#xff1f;24.顺序表中某元素的地址为&#xff1f;25.m叉树第K层的结点数为&#xff1f;26. 在双向循环链表某节点…

「Mac畅玩鸿蒙与硬件54」UI互动应用篇31 - 滑动解锁屏幕功能

本篇教程将实现滑动解锁屏幕功能&#xff0c;通过 Slider 组件实现滑动操作&#xff0c;学习事件监听、状态更新和交互逻辑的实现方法。 关键词 滑动解锁UI交互状态管理动态更新事件监听 一、功能说明 滑动解锁屏幕功能包含以下功能&#xff1a; 滑动解锁区域&#xff1a;用…

螺栓松动丢失腐蚀生锈检测数据集VOC+YOLO格式504张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;504 标注数量(xml文件个数)&#xff1a;504 标注数量(txt文件个数)&#xff1a;504 标注…

Postman测试big-event

报错500。看弹幕&#xff0c;知道可能是yml或sql有问题。 所以检查idea工作台&#xff0c; 直接找UserMapper检查&#xff0c;发现完全OK。 顺着这个error发现可能是sql有问题。因为提示是sql问题&#xff0c;而且是有now()的那个sql。 之后通过给的课件&#xff0c;复制课件…

如何使用大语言模型进行事件抽取与关系抽取

诸神缄默不语-个人CSDN博文目录 文章目录 1. 什么是事件抽取与关系抽取&#xff1f;2. 示例&#xff1a;使用大语言模型进行事件抽取与关系抽取 1. 什么是事件抽取与关系抽取&#xff1f; 事件抽取是指从文本中识别出与某些“事件”相关的信息。这些事件通常包括动作、参与者、…

NAT网络技术

NAT&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;是一种常用的网络技术&#xff0c;主要用于在私有网络和公共网络之间转换IP地址。在家庭和小型企业网络当中用的比较多。它的主要功能有IP地址重用和增强网络的安全性。   NAT允许一个整个网…

SpringBoot框架开发中常用的注解

文章目录 接收HTTP请求。RestController全局异常处理器Component依赖注入LombokDataBuildersneakyThrowsRequiredArgsConstructor 读取yml文件配置类注解 接收HTTP请求。 RequestMapping 接收HTTP请求。具体一点是 GetMapping PostMapping PutMapping DeleteMapping 一共…

TVS二极管选型【EMC】

TVS器件并联在电路中&#xff0c;当电路正常工作时&#xff0c;他处于截止状态&#xff08;高阻态&#xff09;&#xff0c;不影响线路正常工作&#xff0c;当线路处于异常过压并达到其击穿电压时&#xff0c;他迅速由高阻态变为低阻态&#xff0c;给瞬间电流提供一个低阻抗导通…

Azkaban其二,具体使用以及告警设置

目录 Azkaban的使用 1、使用Flow1.0(比较老旧&#xff09; 2、Flow2.0的用法 1、小试牛刀 2、YAML格式的数据 3、多任务依赖 4、内嵌流&#xff08;嵌套流&#xff09;案例 5、动态传参 3、Azkaban的报警机制 1&#xff09;邮箱通知 2&#xff09;电话报警机制 4、关…

文档 | Rstudio下的轻量级单页面markdown阅读器 markdownReader

需求&#xff1a;在写R数据分析项目的时候&#xff0c;代码及结果的关键变化怎么记录下来&#xff1f;最好git能很容易的跟踪版本变化。 markdown 是最理想的选择&#xff0c;本文给出一种Rstuidio下的轻量级md阅读器实现&#xff1a;markdownReader。书写md还是在Rstudio。更…

SonarQube相关的maven配置及使用

一、maven 全局配置 <settings><pluginGroups><pluginGroup>org.sonarsource.scanner.maven</pluginGroup></pluginGroups><profiles><profile><id>sonar</id><activation><activeByDefault>true</acti…

Arduino Uno简介与使用方法

目录 一、Arduino Uno概述 1. 硬件特性 2. 开发环境 二、Arduino Uno的基本使用方法 1. 硬件连接 2. 软件编程 三、Arduino Uno编程基础 1. 基本语法 2. 常用函数 四、Arduino Uno应用举例 1. LED闪烁 2. 温度检测 3. 超声波测距 五、Arduino Uno的扩展与应用 1…

UniApp | 从入门到精通:开启全平台开发的大门

UniApp | 从入门到精通:开启全平台开发的大门 一、前言二、Uniapp 基础入门2.1 什么是 Uniapp2.2 开发环境搭建三、Uniapp 核心语法与组件3.1 模板语法3.2 组件使用四、页面路由与导航4.1 路由配置4.2 导航方法五、数据请求与处理5.1 发起请求5.2 数据缓存六、样式与布局6.1 样…