当前位置: 首页 > 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.dtcms.com/a/324231.html

相关文章:

  • Elasticsearch 搜索模板(Search Templates)把“可配置查询”装进 Mustache
  • 从MySQL到大数据平台:基于Spark的离线分析实战指南
  • 重学React(四):状态管理二
  • Spark执行计划与UI分析
  • 【软考中级网络工程师】知识点之 DCC 深度剖析
  • 系统架构设计师备考之架构设计高级知识
  • 企业高性能web服务器——Nginx
  • App Trace 功能详解 (开发者视角)
  • IDEA 如何导入系统设置
  • 从0到1学LangChain之Agent代理:解锁大模型应用新姿势
  • 【机器学习深度学习】Embedding 模型详解:从基础原理到实际应用场景
  • Xstream反序列化,fastjson,jcakson靶场复现
  • 刑法视野下的虚拟财产属性争议:法律风险与市场潜力解析
  • ThinkPHP8学习篇(二):路由
  • Day39--动态规划--198. 打家劫舍,213. 打家劫舍 II,337. 打家劫舍 III
  • Code Exercising Day 10 of “Code Ideas Record“:StackQueue part02
  • MVCC和日志
  • 国内外主流大模型深度体验与横向评测:技术、场景与未来展望
  • 后置定语:for + 宾语 + 被动不定式
  • CentOS 10在文本控制台模式下修改字体大小
  • 2020/12 JLPT听力原文 问题一
  • LLM多模态模型应用探索调研
  • 【0基础3ds Max】主工具栏介绍(下)
  • 故障诊断 | VMD-CNN-LSTM西储大学轴承故障诊断附MATLAB代码
  • 智慧社区--4
  • 【C++详解】红黑树规则讲解与模拟实现(内附红黑树插入操作思维导图)
  • 本地代码上传Github步骤
  • 《设计模式》UML类图
  • 通过trae开发你的第一个Chrome扩展插件
  • A4.0:继C5.2的BJT理论引申的开关作用的应用示例