首页 > 其他分享 >table

table

时间:2024-10-18 11:00:58浏览次数:6  
标签:元素 mytable 索引 fruits print table

Lua table(表)

  • table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。
  • Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil。
  • Lua table 是不固定大小的,你可以根据自己需要进行扩容。
  • Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。 例如string.format表示使用"format"来索引table string。

table(表)的构造

构造器是创建和初始化表的表达式。表是Lua特有的功能强大的东西。最简单的构造函数是{},用来创建一个空表。可以直接初始化数组:

-- 初始化表
mytable = {}

-- 指定值
mytable[1]= "Lua"

-- 移除引用
mytable = nil
-- lua 垃圾回收会释放内存

当我们为 table a 并设置元素,然后将 a 赋值给 b,则 a 与 b 都指向同一个内存。如果 a 设置为 nil ,则 b 同样能访问 table 的元素。如果没有指定的变量指向a,Lua的垃圾回收机制会清理相对应的内存。

以下实例演示了以上的描述情况:

-- 简单的 table
mytable = {}
print("mytable 的类型是 ",type(mytable))

mytable[1]= "Lua"
mytable["wow"] = "修改前"
print("mytable 索引为 1 的元素是 ", mytable[1])
print("mytable 索引为 wow 的元素是 ", mytable["wow"])

-- alternatetable和mytable的是指同一个 table
alternatetable = mytable

print("alternatetable 索引为 1 的元素是 ", alternatetable[1])
print("mytable 索引为 wow 的元素是 ", alternatetable["wow"])

alternatetable["wow"] = "修改后"

print("mytable 索引为 wow 的元素是 ", mytable["wow"])

-- 释放变量
alternatetable = nil
print("alternatetable 是 ", alternatetable)

-- mytable 仍然可以访问
print("mytable 索引为 wow 的元素是 ", mytable["wow"])

mytable = nil
print("mytable 是 ", mytable)

以上代码执行结果为:

mytable 的类型是     table
mytable 索引为 1 的元素是     Lua
mytable 索引为 wow 的元素是     修改前
alternatetable 索引为 1 的元素是     Lua
mytable 索引为 wow 的元素是     修改前
mytable 索引为 wow 的元素是     修改后
alternatetable 是     nil
mytable 索引为 wow 的元素是     修改后
mytable 是     nil

Table 操作

以下列出了 Table 操作常用的方法:

序号方法 & 用途
1table.concat (table [, sep [, start [, end]]]):

concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。

2table.insert (table, [pos,] value):

在table的数组部分指定位置(pos)插入值为value的一个元素. pos参数可选, 默认为数组部分末尾.

3table.remove (table [, pos])

返回table数组部分位于pos位置的元素. 其后的元素会被前移. pos参数可选, 默认为table长度, 即从最后一个元素删起。

4table.sort (table [, comp])

对给定的table进行升序排序。

  • Table 连接

我们可以使用 concat() 输出一个列表中元素连接成的字符串:

fruits = {"banana","orange","apple"}
-- 返回 table 连接后的字符串
print("连接后的字符串 ",table.concat(fruits))

-- 指定连接字符
print("连接后的字符串 ",table.concat(fruits,", "))

-- 指定索引来连接 table
print("连接后的字符串 ",table.concat(fruits,", ", 2,3))

执行以上代码输出结果为:

连接后的字符串     bananaorangeapple
连接后的字符串     banana, orange, apple
连接后的字符串     orange, apple
  • 插入和移除

以下实例演示了 table 的插入和移除操作:

fruits = {"banana","orange","apple"}

-- 在末尾插入
table.insert(fruits,"mango")
print("索引为 4 的元素为 ",fruits[4])

-- 在索引为 2 的键处插入
table.insert(fruits,2,"grapes")
print("索引为 2 的元素为 ",fruits[2])

print("最后一个元素为 ",fruits[5])
table.remove(fruits)
print("移除后最后一个元素为 ",fruits[5])

执行以上代码输出结果为:

索引为 4 的元素为     mango
索引为 2 的元素为     grapes
最后一个元素为     mango
移除后最后一个元素为     nil
  • Table 排序

以下实例演示了 table 的插入和移除操作:

fruits = {"banana","orange","apple","grapes"}
print("排序前")
for k,v in ipairs(fruits) do
        print(k,v)
end

table.sort(fruits)
print("排序后")
for k,v in ipairs(fruits) do
        print(k,v)
end

执行以上代码输出结果为:

排序前
1    banana
2    orange
3    apple
4    grapes
排序后
1    apple
2    banana
3    grapes
4    orange

标签:元素,mytable,索引,fruits,print,table
From: https://www.cnblogs.com/comradexiao/p/18473854

相关文章

  • 解决TypeError: 'NoneType' object is not subscriptable
    1.捕获异常的方式try:img_list=img_list["name"]except:img_list=""2.对象进行判断ifimg_list:img_list=img_list["name"]else:img_list=""demotextJson=json.loads(res.text)#转json对象iftextJson:##整个对象都......
  • vue,xlsx,xlsx-style,file-saver,生成Excel并导出,cptable报错,合并单元格 样式缺失
    一,安装依赖 二,导入依赖import*asXLSXfrom'xlsx';import*asXLSX_STYLEfrom'xlsx-style'import{saveAs}from'file-saver';三,解决引入xlsx-style./cptable模块找不到问题Thisrelativemodulewasnotfound:*./cptablein./node_modules......
  • vue3.0 使用Element Plus修改el-table表格的横纵滚动条颜色、宽高等样式
    在Vue3.0和ElementPlus中修改el-table的滚动条样式,可能遇到了样式不生效的问题。这通常是因为ElementPlus使用了自定义的滚动条组件el-scrollbar,而不是浏览器默认的滚动条。因此,需要针对el-scrollbar组件进行样式定制。<stylescoped>/*滚动条整体部分*/......
  • 文生图:Stable Diffusion、Midjourny
    StableDiffusion(SD)和Midjourney(MJ)是当前流行的两款AI图像生成工具,它们各有特点和优势:**-StableDiffusion是完全开源的,**这意味着用户可以免费使用,并且有技术能力的用户可以自行修改和优化模型。很多国内的公司,都是基于这个模型,本地部署,自己只开发前端应用。StableDiff......
  • 【奶奶看了都会了】AI绘画 Mac安装stable-diffusion-webui绘制AI妹子保姆级教程
    1.作品图2.准备工作目前网上能搜到的stable-diffusion-webui的安装教程都是Window和MacM1芯片的,而对于因特尔芯片的文章少之又少,这就导致我们还在用老Intel芯片的Mac本,看着别人生成美女图片只能眼馋。所以这周末折腾了一天,总算是让老Mac本发挥作用了。先来说说准备工作:......
  • ProTable 如何做到下拉滚动加载数据
    1、这里主要是什么呢这里的关键是$('.ant-table-body').on('scroll',handleScrollEvent);监听滚动条事件。1、然后再reuqest里面设置,是因为ProTable点击查询时,会进到这里。2、监听page,是当滚动导致页数,发生变化时,重新加载数据!importReact,{useRef,useEffect,useState......
  • el-table自定义表头新
    <el-table-columnprop="address"label="333333"min-width="180":show-overflow-tooltip="true"><templateslot......
  • el-table样式修改
    //table样式//表头:deep(.el-tableth){background-color:transparent;background:#1650ad!important;background-size:100%100%;}/*修改表头文字颜色*/:deep(.el-table.cell){color:#ffffff;}//去除头部边框线:deep(.el-tabletd.el-t......
  • k8s和ipvs、lvs、ipvsadm,iptables,底层梳理,具体是如何实现的
    计算节点的功能:提供容器运行的环境kube-proxy的主要功能:术业有专攻,kube-proxy的主要功能可以概括为4个字网络规则那么kube-proxy自己其实是个daemonset控制器跑的每个节点上都有个的pod它负责网络规则其实呢它还是个小领导它不直接去搞网络规则而是告诉别人,网络规......
  • 【Stable Diffusion案例教程】如何制作3D立体字场景效果
    StableDiffusion是2022年发布的深度学习文本到图像生成模型,它主要用于根据文本的描述产生详细图像,以及在提示词指导下进行图生图的绘图模式。基于开源的优势,SD有着庞大的用户社群,其中又包含着大量的优秀创作者和优质模型。这份完整版的AI绘画全套学习资料已经上传CSDN,......