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

Lua学习(一)

lua基础学习

    • LUA 语言
      • 1. 什么是lua?
        • 1.1 准备工作
      • 2. 基本语法
        • 2.1 注释
        • 2.2 标识符
        • 2.3 关键字
        • 2.4 全局变量
      • 3. 数据类型
      • 4. 变量
        • 4.1 赋值语句
      • 5. 循环
        • 5.1 while循环
        • 5.2 for循环
        • 5.3泛型for循环
        • 5.4 repeat until 循环
        • 5.5 break 语句
      • 6. 流程控制
        • 6.1 if语句
        • 6.2 if else 语句
        • 6.3 if else if 语句

LUA 语言

1. 什么是lua?

lua 是轻量小巧的编程语言,其设计的目的就是为了嵌入到应用程序里面去。

从而为应用程序 提供扩展。

使用的是标准的c并以源码的方式对外开放

1.1 准备工作

首先下载lua -> lua官网 下载

到达官网之后点击 download

在这里插入图片描述

选择压缩文件,这里面的是源码需要我们编译。
在这里插入图片描述

在这里我使用的是linux系统。

  • 将压缩包传入到虚拟机我使用的是Xftp和Xshell 找到存放压缩包的目录
tar - zxvf lua-5.4.6.tar.gz
  • 解压之后就是到达有 makefile的文件夹
make linux
  • 到这里就基本完成了
  • make完成之后会生成两个exe文件分别是lua 和luac
  • 其中lua是可以直接执行lua 脚本的
  • luac则是将lua编译生成.out文件然后运行.out文件

在这期间我遇到了一个问题就是我没有make命令。只需要输入如下命令即可:

yum -y install gcc automake autoconf libtool make yum install gcc gcc-c++

2. 基本语法

2.1 注释

  • 单行注释
--
  • 多行注释(快捷键 一般为 ctrl + shift + ?)
--[[多行注释多行注释--]]

2.2 标识符

lua 可以使用_,数字,字母,表示变量但是不能使用特殊符号表示变量。下面都是正确的表示符表示。

mohd         zara      abc     move_name    a_123
myname50     _temp     j       a23b9        retVal

2.3 关键字

首先是关键字被lua 保留了 不能作为用户自定义的标示符。

andbreakdoelse
elseifendfalsefor
functionifinlocal
nilnotorrepeat
returnthentrueuntil
whilegoto

一般约定,以下划线开头连接一串大写字母的名字(比如 _VERSION)被保留用于 Lua 内部全局变量。

2.4 全局变量

默认情况下 变量都是全局的,局部的变量出现在方法中。

3. 数据类型

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 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。

4. 变量

Lua 变量有三种类型:全局变量、局部变量、表中的域。

加上 local 的变量就是局部变量 只能作用于该文件

而如果在一个方法中定义了一个加local的变量那么这个变量只在这个方法中可见

a = 5               -- 全局变量
local b = 5         -- 局部变量function joke()c = 5           -- 全局变量local d = 6     -- 局部变量
end-- joke()  要先进行调用才可以直接使用
-- print(c,d) --5 nil  
print(c,d) -- nil nil 

4.1 赋值语句

site  = {}site["key"] = "www.baidu.com"
print(site.key)
print(site["key"])
-- 当索引为字符串类型时的一种简化写法
-- 采用索引访问本质上是一个类似这样的函数调用
-- www.baidu.com
-- www.baidu.com

​ Lua 可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。

a,b =10,"dada"
print(a,b)
c,d,e,f=10
print(c,d,e,f)
--变量个数 > 值的个数             按变量个数补足nil
--变量个数 < 值的个数             多余的值会被忽略

5. 循环

5.1 while循环

在条件为 true 时,让程序重复地执行某些语句。执行语句前会先检查条件是否为 true。

a=0
while(a < 10)doprint("a的值是:",a)a = a+1
end

5.2 for循环

for var=exp1,exp2,exp3 do  <执行体>  
end 
var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 "执行体"。exp3 是可选的,如果不指定,默认为1for i = 20, 10,-2 doprint(i)
end

5.3泛型for循环

泛型 for 循环通过一个迭代器函数来遍历所有值,类似 java 中的 foreach 语句。

a= {"one","two","three","four","five"}
for i, v in ipairs(a) doprint(i,v)
end

5.4 repeat until 循环

for 和 while 循环的条件语句在当前循环执行开始时判断,而 repeat…until 循环的条件语句在当前循环结束后判断。

b =0
repeatprint(b)b = b+1
until(b >10 )

5.5 break 语句

break 语句插入在循环体中,用于退出当前循环或语句,并开始脚本执行紧接着的语句

a = 10--[ while 循环 --]
while( a < 20 )
doprint("a 的值为:", a)a=a+1if( a > 15)then--[ 使用 break 语句终止循环 --]breakend
end

6. 流程控制

6.1 if语句

流程控制语句通过程序设定一个或多个条件语句来设定。在条件为 true 时执行指定程序代码,在条件为 false 时执行其他指定代码。

--[ 0 为 true ]
if(0)
thenprint("0 为 true")
end

6.2 if else 语句

Lua if 语句可以与 else 语句搭配使用, 在 if 条件表达式为 false 时执行 else 语句代码块。

if(布尔表达式)
then--[ 布尔表达式为 true 时执行该语句块 --]
else--[ 布尔表达式为 false 时执行该语句块 --]
enda =10
if(a >6)thenprint("我比6大")
elseprint("我比6小")
end

Lua认为false和nil为假,true 和非nil为真。要注意的是Lua中 0 为 true。

6.3 if else if 语句

if … else if…else 语句搭配使用, 在 if 条件表达式为 false 时执行 elseif…else 语句代码块,用于检测多个条件语句。

if( 布尔表达式 1)
then--[ 在布尔表达式 1 为 true 时执行该语句块 --]elseif( 布尔表达式 2)
then--[ 在布尔表达式 2 为 true 时执行该语句块 --]elseif( 布尔表达式 3)
then--[ 在布尔表达式 3 为 true 时执行该语句块 --]
else --[ 如果以上布尔表达式都不为 true 则执行该语句块 --]
end

相关文章:

Lua学习(一)

lua基础学习 LUA 语言1. 什么是lua&#xff1f;1.1 准备工作 2. 基本语法2.1 注释2.2 标识符2.3 关键字2.4 全局变量 3. 数据类型4. 变量4.1 赋值语句 5. 循环5.1 while循环5.2 for循环5.3泛型for循环5.4 repeat until 循环5.5 break 语句 6. 流程控制6.1 if语句6.2 if else 语…...

Python:列表推导式

相关阅读 Python专栏https://blog.csdn.net/weixin_45791458/category_12403403.html?spm1001.2014.3001.5482 列表推导式使得创建特定列表的方式更简洁。常见的用法为&#xff0c;对序列或可迭代对象中的每个元素应用某种操作&#xff0c;用生成的结果创建新的列表&#xff…...

应急三维电子沙盘数字孪生系统

一、简介应急三维电子沙盘数字孪生系统是一种基于虚拟现实技术和数字孪生技术的应急管理工具。它通过将真实世界的地理环境与虚拟世界的模拟环境相结合&#xff0c;实现了对应急场景的模拟、分析和决策支持。该系统主要由三维电子沙盘和数字孪生模型两部分组成。三维电子沙盘是…...

LeetCode每日一题:1654. 到家的最少跳跃次数(2023.8.30 C++)

目录 1654. 到家的最少跳跃次数 题目描述&#xff1a; 实现代码与解析&#xff1a; bfs 1654. 到家的最少跳跃次数 题目描述&#xff1a; 有一只跳蚤的家在数轴上的位置 x 处。请你帮助它从位置 0 出发&#xff0c;到达它的家。 跳蚤跳跃的规则如下&#xff1a; 它可以 …...

数据结构例题代码及其讲解-栈与队列

栈与队列 栈Stack 后进先出 ​ 栈的结构体定义及基本操作。 #define MaxSize 50 typedef struct {int data[MaxSize];//栈中存放数据类型为整型int top;//栈顶指针 }Stack;初始化 ​ 这里初始化时是将栈顶指针指向-1&#xff0c;有些则是指向0&#xff0c;因此后续入栈出栈…...

【Spark】Pyspark RDD

1. RDD算子1.1 文件 <> rdd对象1.2 map、foreach、mapPartitions、foreach Partitions1.3 flatMap 先map再解除嵌套1.4 reduceByKey、reduce、fold 分组聚合1.5 mapValue 二元组value进行map操作1.6 groupBy、groupByKey1.7 filter、distinct 过滤筛选1.8 union 合并1.9 …...

数学建模:Logistic回归预测

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 数学建模&#xff1a;Logistic回归预测 Logistic回归预测 logistic方程的定义&#xff1a; x t 1 c a e b t x_{t}\frac{1}{cae^{bt}}\quad xt​caebt1​ d x d t − a b e b t ( c a e b t ) 2 >…...

一个面向MCU的小型前后台系统

JxOS简介 JxOS面向MCU的小型前后台系统&#xff0c;提供消息、事件等服务&#xff0c;以及软件定时器&#xff0c;低功耗管理&#xff0c;按键&#xff0c;led等常用功能模块。 gitee仓库地址为&#xff08;复制到浏览器打开&#xff09;&#xff1a; https://gitee.com/jer…...

软件外包开发人员分类

在软件开发中&#xff0c;通常会分为前端开发和后端开发&#xff0c;下面和大家分享软件开发中的前端开发和后端开发分类和各自的职责&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1. 前端开发&…...

HTML 元素被定义为块级元素或内联元素

大多数 HTML 元素被定义为块级元素或内联元素。 10. 块级元素 块级元素在浏览器显示时&#xff0c;通常会以新行来开始&#xff08;和结束&#xff09;。 我们已经学习过的块级元素有: <h1>, <p>, <ul>, <table> 等。 值得注意的是: <p> 标签…...

单调递增的数字【贪心算法】

单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 public class Solution {public int monotoneIncreasingDigits…...

gnuradio-hackrf_info.exe -FM频率使用

97910000...

JVM学习(三)--生产环境的线程问题诊断

1.如何定位哪个进程对cpu占用过高 使用top命令 2.如何定位到某个进程的具体某个线程 使用ps H -eo pid,tid,%cpu | grep 进程id (可以具体定位到某个进程的某个线程的cpu占用情况) 3.如何查看有问题线程的具体信息&#xff0c;定位到代码的行数 使用jstack 进程id 可以找…...

PHP数组处理$arr1转换为$arr2

请编写一段程序将$arr1转换为$arr2 $arr1 array( 0>array (fid>1,tid>1,name>Name1), 1>array (fid>2,tid>2,name>Name2), 2>array (fid>3,tid>5,name>Name3), 3>array (fid>4,tid>7,name>Name4), 4>array (fid>5,tid…...

ATF(TF-A)安全通告 TFV-10 (CVE-2022-47630)

安全之安全(security)博客目录导读 ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-10 (CVE-2022-47630) 二、CVE-2022-47630 2.1 Bug 1:证书校验不足 2.2 Bug 2:auth_nvctr()中缺少边界检查...

详解 SpringMVC 中获取请求参数

文章目录 1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、[RequestParam ](/RequestParam )4、[RequestHeader ](/RequestHeader )5、[CookieValue ](/CookieValue )6、通过POJO获取请求参数7、解决获取请求参数的乱码问题总结 在Spring MVC中&#xff0c;获取请…...

Message: ‘chromedriver‘ executable may have wrong permissions.

今天运行项目遇到如下代码 driverwebdriver.Chrome(chrome_driver, chrome_optionsoptions)上述代码运行报错如下&#xff1a; Message: chromedriver executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home出错的原…...

每日一题 1372二叉树中的最长交错路径

题目 给你一棵以 root 为根的二叉树&#xff0c;二叉树中的交错路径定义如下&#xff1a; 选择二叉树中 任意 节点和一个方向&#xff08;左或者右&#xff09;。如果前进方向为右&#xff0c;那么移动到当前节点的的右子节点&#xff0c;否则移动到它的左子节点。改变前进方…...

【力扣每日一题】2023.9.2 最多可以摧毁的敌人城堡数量

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 这道题难在阅读理解&#xff0c;题目看得我匪夷所思&#xff0c;错了好多个测试用例才明白题目说的是什么。 我简单翻译一下就是寻找1和…...

kotlin实现java的单例模式

代码 package com.flannery.interviewdemo.singleinstance//https://blog.csdn.net/Jason_Lee155/article/details/128796742 Java实现 //public class SingletonDemo { // private static SingletonDemo instancenew SingletonDemo(); // private SingletonDemo() // …...

使用 KeyValueDiffers 检测Angular 对象的变化

使用 KeyValueDiffers 检测Angular 对象的变化 ngDoCheck钩子 ngDoCheck 是 Angular 生命周期钩子之一。它允许组件在 Angular 检测到变化时执行自定义的变化检测逻辑。 当任何组件或指令的输入属性发生变化、在组件内部发生了变更检测周期或者当主动触发变更检测策略&#…...

Macos 10.13.2安装eclipse

eclipse for php 安装2021-12最后版本4.22 2021-12 R | Eclipse Packages jdk17 x64 dmg安装包,要安装jdk这个才能运行 Java Downloads | Oracle...

Android逆向学习(一)vscode进行android逆向修改并重新打包

Android逆向学习&#xff08;一&#xff09;vscode进行android逆向修改并重新打包 写在前面 其实我不知道这个文章能不能写下去&#xff0c;其实我已经开了很多坑但是都没填上&#xff0c;现在专利也发出去了&#xff0c;就开始填坑了&#xff0c;本坑的主要内容是关于androi…...

【深入浅出设计模式--状态模式】

深入浅出设计模式--状态模式 一、背景二、问题三、解决方案四、 适用场景总结五、后记 一、背景 状态模式是一种行为设计模式&#xff0c;让你能在一个对象的内部状态变化时改变其行为&#xff0c;使其看上去就像改变了自身所属的类一样。其与有限状态机的概念紧密相关&#x…...

Debezium系列之:Debezium Server在生产环境大规模应用详细的技术方案

Debezium系列之:Debezium Server在生产环境大规模应用详细的技术方案 一、需求背景二、Debezium Server实现技术三、技术方案流程四、生成接入配置五、新增数据库接入和删除数据库接入效果六、监控zookeeper节点程序七、新增数据库接入部署debezium server程序八、删除数据库接…...

Echart笔记

Echart笔记 柱状图带背景色的柱状图将X与Y轴交换制作为进度条 柱状图 带背景色的柱状图 将X与Y轴交换制作为进度条 //将X与Y轴交换制作为进度条 option { xAxis: {type: value,min:0,max:100,show:false,//隐藏x轴},yAxis: {type: category,data:[进度条],show:false,//隐…...

docker 笔记1

目录 1.为什么有docker ? 2.Docker 的核心概念 3.容器与虚拟机比较 3.1传统的虚拟化技术 3.2容器技术 3.3Docker容器的有什么作用&#xff1f; 3.4应用案例 4. docker 安装下载 4.1CentOS Docker 安装 4.2 Docker的基本组成 &#xff1f;&#xff08;面试&#xff09…...

HTTP Get 和 Post 的区别

分析&回答 使用规范 根据HTTP规范&#xff0c;GET用于信息获取&#xff0c;而且应该是安全的和幂等的。 根据HTTP规范&#xff0c;POST表示可能修改变服务器上的资源的请求。 传递参数 GET请求的数据会附在URL之后&#xff08;就是把数据放置在HTTP协议头中&#xff09;。…...

C++超级迷宫游戏

游戏效果 用钥匙、护盾等道具帮助你的小人通过大门、墙、怪物、岩浆等困难到达终点。 游戏代码 #include<bits/stdc.h> #include<conio.h> #include<windows.h> using namespace std; void Color(int a) {if(a0) SetConsoleTextAttribute(GetStdHandle(STD…...

CUDA小白 - NPP(3) 图像处理 Color and Sampling Conversion

cuda小白 原始API链接 NPP GPU架构近些年也有不少的变化&#xff0c;具体的可以参考别的博主的介绍&#xff0c;都比较详细。还有一些cuda中的专有名词的含义&#xff0c;可以参考《详解CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid》 常见的NppStatus&#xf…...

长宁区小学网站建设/农产品网络营销

无重复字符的最长子串:Python实现滑动窗口算法 在日常编程中,我们经常需要解决字符串相关问题。例如,如何在一个字符串中寻找最长的无重复字符的子串?这个问题看似简单,但是其实需要运用到高级数据结构和算法。在本文中,我们将介绍如何用Python实现滑动窗口算法来解决这个…...

网站平台维护/百度推广好做吗

一、Varish的简介Varnish是一款高性能的开源HTTP加速器&#xff0c;挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid&#xff0c;性能比以前更好。在当前主流的Web架构中&#xff0c;Cache担任着越来越重要的作用。常见的基于浏览器的C/S架构&#xff0c…...

建设网站要服务器吗/线上推广的优势和好处

原文https://segmentfault.com/a/1190000016344599 看看面试题&#xff0c;只是为了查漏补缺&#xff0c;看看自己那些方面还不懂。切记不要以为背了面试题&#xff0c;就万事大吉了&#xff0c;最好是理解背后的原理&#xff0c;这样面试的时候才能侃侃而谈。不然&#xff0c…...

wordpress限制次数/网络服务器配置与管理

p10 基础模块——修改mapper文件 p11 基础模块——搭建Spring的单元测试环境 其中 Department.java package com.atguigu.crud.bean;public class Department {private Integer deptId;private String deptName;public Department() {}public Department(Integer deptId, St…...

网上商城网站 找什么做/百度广告代理公司

两个月前的一件事&#xff0c;让我突然明白「孤立无援」的含义。&#xff08;真实经历&#xff0c;经当事人授权&#xff0c;侵权必究&#xff09;一个朋友的发小&#xff0c;温婉独立&#xff0c;农村走出来的高校美女硕士。有着体面的工作和生活&#xff0c;半年前刚刚步入婚…...

怎么来自己做网站优化/百度手机app

DRM实例教程DRM是一个显示驱动框架&#xff0c;也就是把功能封装成 open/close/ioctl 等标准接口&#xff0c;应用程序调用这些接口来驱动设备&#xff0c;显示数据。我们这里将从使用的角度来看看&#xff0c;怎么验证和使用DRM驱动。DRM设备节点DRM驱动会在/dev/dri下创建3个…...