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

Lua的数组、迭代器、table、模块

数组

数组:相同元素的集合。

索引用整数表示:从1开始。

print("------多维数组--------")testArray2 = {} for i=1,3,1 dotestArray2[i]={}for j=1,2,1 dotestArray2[i][j] = i*jendendfor i=1,3 dofor j=1,2 doprint(testArray2[i][j])endprint("------") end

迭代器

泛型 for 迭代器
a = {"a","b","c"}
for k,v in pairs(a)
do
print(k,v)
end
a = {"a","b","c"}
for k,v in ipairs(a)
do
print(k,v)
end
pairs会遍历所有key和值。
ipairs:只会从1开始,步长是1,中间不是数字作为key的元素会被忽略,一直到第一个不连续的数
字索引为止(不含)。适合遍历数组。
for迭代器的结构:
for 变量列表 in 迭代函数 ,状态常量,控制变量
do
循环体
end
print("-------迭代器的定义例子--------")
-- 求平方 1-9的平方
function square(iteratorMaxCount,currentNumber)
if currentNumber < iteratorMaxCount then
currentNumber = currentNumber +1
if(currentNumber == 2) then
return nil,1
end
return currentNumber,currentNumber*currentNumber
end
endfor i,n in square ,9,0
do
print(i,n)
end

table:

a = {key1="a",key2="b"} 不能用nil做索引。
-- table
-- 初始化
myTable = {}
myTable[1] = "1" -- 删除
myTable = nil
print("--------------------") myTab = {}
print("myTab的类型是:"..type(myTab))myTab[1]="1号元素"
myTab["a"]="a元素"print("myTab[1]的元素是:"..myTab[1])
print("myTab['a']的元素是:"..myTab["a"]) -- 将myTab赋值
newMyTab = myTab;
print("newMyTab[1]的元素是:"..newMyTab[1])
print("newMyTab['a']的元素是:"..newMyTab["a"])-- 修改元素
newMyTab["a"]="新值"
print("myTab['a']的元素是:"..myTab["a"])
print("newMyTab['a']的元素是:"..newMyTab["a"])-- 置为nil
myTab = nil  print(myTab)
print("newMyTab[1]的元素是:"..newMyTab[1])
print("newMyTab['a']的元素是:"..newMyTab["a"])

模块

模块的定义

从lua5.1开始,引入了模块机制,把一些公用的代码放到文件中,通过api的方式,让其他程序调 用,这个文件,就是一个模块。

类似于java中的jar包。

lua中的模块,其实是一个table(由 变量、函数等已知的 lua元素组成)。最好在模块的结尾,需要 返回一个table。

如何编写模块

文件名:module.lua-- 模块 :module.lua module = {}module.constant = "模块中的常量"function module.func1()print("这是函数1") end# 这块,注意 module不能写。local function func2()print("这是私有函数2")endfunction module.func3()func2()end-- 返回表return module

require函数

require("模块名")

require "模块名"

-- 调用模块

require("module")

print(module.constant) module.func3()

http://www.lryc.cn/news/615701.html

相关文章:

  • 黑马SpringBoot+Elasticsearch作业2实战:商品搜索与竞价排名功能实现
  • sqli-labs-master/Less-51~Less-61
  • Lua语言变量、函数、运算符、循环
  • 【RocketMQ 生产者和消费者】- ConsumeMessageOrderlyService 顺序消费消息
  • 在windows安装colmap并在cmd调用
  • vue3前端项目cursor rule
  • 常用hook钩子函数
  • 海关 瑞数 失信企业 逆向 分析 后缀 rs
  • 从神经网络语言模型(NNLM)到Word2Vec:自然语言处理中的词向量学习
  • 【Html网页模板】炫酷科技风公司首页
  • Axure设计下的智慧社区数据可视化大屏:科技赋能社区管理
  • [0CTF 2016]piapiapia
  • PhotoDirector 安卓版:功能强大的照片编辑与美化应用
  • Dify集成 Echarts 实现智能数据报表集成与展示实战详解
  • 复杂项目即时通讯从android 5升级android x后遗症之解决 ANR: Input dispatching timed out 问题 -优雅草卓伊凡
  • 咪咕MGV3200-KLH_GK6323V100C_板号E503744_安卓9_短接强刷包-可救砖
  • WebAssembly技术详解:从浏览器到云原生的高性能革命
  • Flutter 与 Android NDK 集成实战:实现高性能原生功能
  • Vue3 组件化开发
  • Solana上Launchpad混战:新颖性应被重视
  • 一个“加锁无效“的诡异现象
  • BGP 笔记
  • Python 中的 Mixin
  • 第4章 程序段的反复执行2 while语句P128练习题(题及答案)
  • 【动态数据源】⭐️@DS注解实现项目中多数据源的配置
  • Datawhale AI夏令营第三期,多模态RAG方向 Task2
  • 深度学习入门Day8:生成模型革命——从GAN到扩散模型
  • pytorch llm 计算flops和参数量
  • Busybox编译、制作initramfs,并在QEMU中运行
  • 束搜索(Beam Search):原理、演进与挑战