Lua教程

Lua教程(简单易懂)-CSDN博客

博客相关解释:

5、循环

a = {"a", "b"}for i, v in ipairs(a) doprint(i, v)end 

 代码创建了一个名为 a 的数组,并使用 ipairs 迭代这个数组的元素。运行结果显示了每个元素的索引(下标)和对应的值。这是正确的输出结果:

1   a
2   b

在循环中,i 表示元素的索引,从1开始,递增,而 v 表示元素的值。所以,在每次迭代中, i 都会递增,而 v 包含了数组 a 中的对应元素。因此,输出显示了数组中每个元素的索引和值。

这种方式对于遍历数组并处理其中的元素非常有用,特别是当你需要按顺序访问数组中的数据时。

8、字符串

①string.gsub(mainString,findString,replaceString,num)

string.gsub 是Lua中的字符串处理函数,用于在字符串中查找并替换指定的子串。以下是该函数的参数和作用:

  • mainString: 这是要进行查找和替换操作的主字符串,即在这个字符串中查找 findString 并将其替换为 replaceString

  • findString: 这是要查找的子字符串。string.gsub 会在 mainString 中查找所有出现的 findString

  • replaceString: 这是要替换为的新字符串。当 findStringmainString 中被找到时,它将被替换为 replaceString

  • num (可选): 这是一个可选参数,表示要进行替换的次数。如果省略这个参数,所有匹配到的 findString 将都被替换。如果指定了 num,则只有前 num 次匹配到的 findString 会被替换。

string.gsub 函数会返回两个值,分别是:

  1. 一个新的字符串,是进行替换操作后的结果。
  2. 一个整数,表示替换操作的次数。

下面是一个示例,演示如何使用 string.gsub 函数:

local inputString = "Hello, world! Hello, Lua!"
local findString = "Hello"
local replaceString = "Hi"local result, count = string.gsub(inputString, findString, replaceString)print(result)  -- 输出 "Hi, world! Hi, Lua!"
print(count)   -- 输出 2,表示替换操作发生了2次

在这个示例中,我们将 "Hello" 替换为 "Hi",并且函数返回的 count 值为 2,表示 "Hello" 在字符串中出现了2次,都被替换为 "Hi"。 

②string.format("字符串")

string.format 是Lua中用于格式化字符串的函数。它的作用是将不同类型的数据转换为字符串,并按照指定的格式组合成一个新的字符串。通常,string.format 函数的第一个参数是格式化字符串,后面的参数是要插入到格式化字符串中的数据。

以下是使用 string.format 的基本语法:

formatted_string = string.format(format, arg1, arg2, ...)
  • format:这是一个包含格式占位符的字符串,用于指定如何格式化后续参数。占位符以 "%" 开头,后跟一个字符,表示要格式化的数据类型(例如,"%s" 表示字符串,"%d" 表示整数,"%f" 表示浮点数等)。

  • arg1, arg2, ...:这些是要格式化的数据,可以是一个或多个参数,根据 format 字符串中的占位符的数量和类型。

以下是一个示例,演示如何使用 string.format 格式化字符串:

local name = "Alice"
local age = 30
local height = 170.5local formatted = string.format("Name: %s, Age: %d, Height: %.2f", name, age, height)
print(formatted)

在这个示例中,string.format 函数将 name(字符串)、age(整数)、和 height(浮点数)格式化成一个字符串,其中 %s 用于字符串,%d 用于整数,%.2f 用于浮点数。结果将打印出格式化后的字符串。

这个函数在将数据以特定格式输出到字符串时非常有用,特别是在生成日志、报告或用户界面文本时。

③string.byte("字符串")/string.char(数值)

string.bytestring.char 是Lua中用于处理字符和字符编码的函数。

  1. string.byte("字符串"):

    • string.byte 用于获取字符串中指定位置的字符的ASCII码或Unicode码点值。
    • 当提供一个字符串作为参数时,它会返回该字符串的第一个字符的码点值。
    • 如果你想获取字符串中其他字符的码点值,你可以提供第二个可选参数,指定字符的位置。
    • 示例:
      local str = "Hello"
      local firstChar = string.byte(str) -- 获取第一个字符 "H" 的码点值
      print(firstChar) -- 输出 72​

       

 2.string.char(数值):

  • string.char 用于创建一个包含一个或多个字符的字符串,根据给定的ASCII码或Unicode码点值。
  • 你可以传递一个或多个整数作为参数,它将把这些整数转化为相应的字符并返回一个新的字符串。
  • 示例:
    local char1 = string.char(72) -- 创建一个包含 ASCII 码为 72 的字符的字符串
    local char2 = string.char(72, 101, 108, 108, 111) -- 创建包含多个字符的字符串
    print(char1) -- 输出 "H"
    print(char2) -- 输出 "Hello"
    

    这些函数对于字符编码和字符操作非常有用,允许你在字符串和数字之间进行转换,并创建包含特定字符的字符串。

 

10、迭代器

for k,v in pairs(t)print(k,v)
end

代码示例是一个在Lua中用于遍历一个表(table)的通用方法。它使用for循环结构和pairs函数来遍历表中的键和对应的值。以下是代码的解释:

  • for k, v in pairs(t):这是for循环的头部,它用于遍历表t的内容。kv是循环的控制变量,k用于表示键(key),v用于表示值(value)。

  • pairs(t):这是Lua的pairs函数,它用于获取表t中所有的键值对。pairs函数返回一个迭代器,可以用于遍历表。

  • do:这是for循环的开始,标志着循环体的开始。

  • print(k, v):这行代码是循环体,用于在每次迭代中输出键和值。k表示当前键,v表示当前值。

  • end:这是for循环的结束,标志着循环体的结束。

上述代码会遍历表t中的所有键值对,并将它们分别存储在kv中,然后使用print函数将它们输出到控制台。这是一种常见的方式,用于检查表中的数据、处理键值对或进行其他操作。

11、table相关 

②表的操作

table.concat(table,sep,start,end)

table.concat 是 Lua 中用于将表(table)中的元素连接成一个字符串的函数。它的参数和作用如下:

  • table:这是包含要连接的元素的表。
  • sep:这是一个可选的分隔符,用于在连接元素之间插入。如果省略该参数,元素将直接连接在一起。
  • start:这是可选的起始索引,指定从表的哪个位置开始连接元素。默认是1。
  • end:这是可选的结束索引,指定在表的哪个位置结束连接元素。默认是表的最后一个元素。

table.concat 函数会返回一个包含连接后的字符串的新字符串。

以下是一个示例,演示如何使用 table.concat 函数:

local fruits = {"apple", "banana", "cherry", "date"}
local result = table.concat(fruits, ", ", 2, 3)print(result)  -- 输出 "banana, cherry"

在这个示例中,我们有一个包含水果名称的表 fruits。我们使用 table.concat 函数来连接表中的元素,使用逗号和空格作为分隔符,并指定从第2个元素("banana")到第3个元素("cherry")进行连接。结果是 "banana, cherry"。如果不指定 sepstartend 参数,它将连接整个表中的所有元素。 

 

12、模块和包

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

require 是 Lua 中用于加载模块的关键字。当你使用 require 语句时,你可以指定要加载的模块名称,并且 Lua 会尝试查找并加载相应的模块。通常,模块名称是一个字符串,通常包括模块的路径信息。

下面是一般形式的 require 语句:

require "<module_name>"
  • <module_name> 是要加载的模块的名称或路径。

模块可以是内置的Lua库,也可以是自定义的Lua文件,你可以使用 require 语句将其导入到你的Lua脚本中以使用其中定义的函数、变量和功能。要成功使用 require,需要确保模块所在的路径在Lua的模块搜索路径中,或者提供完整的路径。这通常需要模块以.lua文件的形式存在,并且可以通过相对或绝对路径引用。

以下是一个示例:

-- 加载Lua标准库中的math模块
local math_module = require "math"-- 使用math模块中的函数
local sqrt_value = math_module.sqrt(25)
print(sqrt_value)  -- 输出 5

 在这个示例中,require "math" 加载了Lua标准库中的math模块,然后我们使用math_module来调用模块中的sqrt函数来计算平方根。

 

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

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

相关文章

ubuntu20.04 vins-fusion 运行记录

过程记录 环境&#xff1a; ubuntu20.04 opencv4.2.0(此次使用) 3.3.1(其他程序在使用) vins-fusion vision_opencv 1.下载VINS-Fusion和cv_bridge&#xff0c;并进行修改&#xff0c;方便使用opencv4.2.0和对应的cv_bridge。 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src…

C++数位动态规划算法:统计整数数目

题目 给你两个数字字符串 num1 和 num2 &#xff0c;以及两个整数 max_sum 和 min_sum 。如果一个整数 x 满足以下条件&#xff0c;我们称它是一个好整数&#xff1a; num1 < x < num2 min_sum < digit_sum(x) < max_sum. 请你返回好整数的数目。答案可能很大&…

【Linux】基本指令-入门级文件操作(二)

目录 基本指令 7 cp指令&#xff08;重要&#xff09; 8 mv指令&#xff08;重要&#xff09; 9 nano指令 10 cat指令 11 echo指令与重定向&#xff08;重要&#xff09; 12 more指令 13 less指令 基本指令 7 cp指令&#xff08;重要&#xff09; 功能&#xff1a;复…

redis如何实现缓存预热

在业务系统中&#xff0c;我们需要在程序启动的时候加载一些常用的数据到内存数据库中&#xff0c;从而减少业务数据库的压力。这就是我们常提到的缓存预热。官方一点的解释是这样的&#xff1a; 缓存预热是一种在程序启动或缓存失效之后&#xff0c;主动将热点数据加载到缓存中…

注意力屏蔽(Attention Masking)在Transformer中的作用 【gpt学习记录】

填充遮挡&#xff08;Padding Masking&#xff09;&#xff1a; 未来遮挡&#xff08;Future Masking&#xff09;&#xff1a;

09. 机器学习- 逻辑回归

文章目录 线性回归回顾逻辑回归 Hi&#xff0c;你好。我是茶桁。 上一节课&#xff0c;在结尾的时候咱们预约了这节课一开始对上一节课的内容进行一个回顾&#xff0c;并且预告了这节课内容主要是「逻辑回归」&#xff0c;那我们现在就开始吧。 线性回归回顾 在上一节课中&a…

如何处理接口调用的频率限制

背景 接口提供方有调用频率限制的场景下&#xff0c;如何合理设计接口请求? 方案 采用Redis队列&#xff0c;利用 lpush 和 rpop 命令来实现 首先&#xff0c;将订单依次lpush写入Redis队列。定时任务通过 rpop 获取队列订单进行接口调用。 额外说明&#xff1a; 若想查看…

flutter问题汇总

一直卡在building a flutter app for general distribution&#xff1b; AS Message窗口显示 依赖下载失败&#xff1a; 1、修改仓库地址的配置&#xff1a;android/build.gradle repositories {maven { url https://download.flutter.io }maven { url "https://maven.a…

ubuntu如何查看系统信息、cpu型号

查看当前操作系统内核信息 uname -a输出&#xff1a; Linux htu-H110M-S2 5.4.0-148-generic #165~18.04.1-Ubuntu SMP Thu Apr 20 01:14:06 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux 查看当前操作系统发行版信息 cat /etc/issueUbuntu 18.04.6 LTS \n \l 查看cpu型号 c…

Go语言入门心法(一)

Go语言入门心法(一) Go语言入门心法(二): 结构体 Go语言入门心法(三): 接口 一: go语言中变量认知 go语言中变量的定义: &#xff08;要想飞|先会走&#xff09;||&#xff08;翻身仗|抹遗憾 &#xff09; |&#xff08;二八定律&#xff09;(先量变)|(再质变)||&#x…

【Matlab】二维绘图函数汇总

目录 1. plot() 2. subplot() 3. fplot() 4. polarplot() 1. plot() plot() 函数是 Matlab 中最常用的绘图函数&#xff0c;用于在平面直角坐标系中绘制直线或曲线。 用法&#xff1a; plot(X,Y) plot(X,Y,LineSpec) plot(X1,Y1, ... ,Xn,Yn) 说明&#xff1a; plot(X,Y) …

Ubuntu下安装Python

Ubuntu下安装Python 预备知识一、Python安装Python 二、Anaconda安装Anaconda卸载Anaconda 三、Miniconda安装Miniconda 四、异同比较 预备知识 (1) Python是一种编程语言。 (2) Anaconda是一款包管理工具&#xff0c;用来管理Python及其他语言的安装包&#xff0c;预装了很多…

Unity实现经验光照模型

漫反射&#xff1a; Lambert: 公式&#xff1a; //diffuse ambient _parm*lightcolor* max(0, Dot(N,L)) fixed4 frag (v2f i) : SV_Target{//diffuse ambient _parm*lightcolor* max(0, Dot(N,L))fixed3 ambient unity_AmbientSky;fixed3 N normalize(i.worldNormal)…

RackNerd 圣何塞 VPS 测评

发布于 2023-07-06 on https://chenhaotian.top/vps/racknerd-ca/ RackNerd 圣何塞 VPS 测评 官网链接&#xff1a;https://my.racknerd.com/index.php?rp/store/kvm-vps 这款是2022年双十一特别款&#xff0c;现在已经买不到了 网络是G口&#xff0c;4T流量 稳定性不错&…

【考研408真题】2022年408数据结构41题---判断当前顺序存储结构树是否是二叉搜索树

文章目录 思路408考研各数据结构C/C代码&#xff08;Continually updating&#xff09; 思路 很明显&#xff0c;这是一个顺序存储结构的树的构成方法。其中树的根节点位置从索引0开始&#xff0c;对于该结构&#xff0c;存在有&#xff1a;如果当前根节点的下标为n&#xff0c…

获取本地缓存数据修改后,本地缓存中的值也修改问题

获取本地缓存数据修改后&#xff0c;本地缓存中的值也修改问题 JAVA缓存&#xff0c;获取数据后修改&#xff0c;缓存中的数值也会修改&#xff0c;解决方法是创建新的对象再修改值比如使用BeanUtils.copyProperties()方法。如果值是List&#xff0c;可以使用两种方法解决循环…

凉鞋的 Unity 笔记 108. 第二个通识:增删改查

在这一篇&#xff0c;我们来学习此教程的第二个通识&#xff0c;即&#xff1a;增删改查。 增删改查我们不只是一次接触到了。 在最先接触的场景层次窗口中&#xff0c;我们是对 GameObject 进行增删改查。 在 Project 文件窗口中&#xff0c;我们是对文件&文件夹进行增删…

Jetpack:007-Kotlin中的Button

文章目录 1. 概念介绍2. 使用方法2.1 Button2.2 IconButton2.3 ElevatedButton2.4 OutlinedButton2.5 TextButton2.6 FloatingActionButton 3. 示例代码4. 内容总结 我们在上一章回中介绍了Jetpack中输入框相关的内容&#xff0c;本章回中将要介绍 Button。闲话休提&#xff0…

使用【Blob、Base64】两种方式显示【文本、图片、视频】 使用 video 组件播放视频

Blob 显示 Blob 对象的类型是由 MIME 类型&#xff08;Multipurpose Internet Mail Extensions&#xff09;来确定的。MIME 类型是一种标准&#xff0c;用于表示文档、图像、音频、视频等多媒体文件的类型。以下是一些常见的 Blob 对象类型&#xff1a; text/plain&#xff1…

大数据学习(9)-hadoop集群计算速度影响因素

&&大数据学习&& &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 承认自己的无知&#xff0c;乃是开启智慧的大门 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一下博>主哦&#x…