Lua中Table的学习
--table 是 Lua 的一种数据结构,用来帮助我们创建不同的数据类型,如:数组、字典等
--Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。 例如string.format表示使用"format"来索引table string。 mytable = {}
print("mytable 的类型:",type(mytable)) mytable[] = "Lua"
mytable["wow"] = "修改前"
print("mytable 索引为 1 的元素:",mytable[])
print("mytable 索引为 wow 的元素:",mytable["wow"]) --两个table指向的是同一块内存
lgstable = mytable print("lgstable 索引为 1 的元素:",lgstable[]) print("mytable 索引为 wow 的元素:",mytable["wow"])
lgstable["wow"] = "修改后"
print("mytable 索引为 wow 的元素:",mytable["wow"]) --释放变量
lgstable = nil
print("lgstable :",lgstable) --mytable依然可以访问
print("mytable 索引为 wow 的元素:",mytable["wow"]) mytable = nil
print("mytable :",mytable) --[[
以上代码执行结果: mytable 的类型: table
mytable 索引为 1 的元素: Lua
mytable 索引为 wow 的元素: 修改前
lgstable 索引为 1 的元素: Lua
mytable 索引为 wow 的元素: 修改前
mytable 索引为 wow 的元素: 修改后
lgstable : nil
mytable 索引为 wow 的元素: 修改后
mytable : nil
--]] --table的操作 --table连接表中的元素为字符串
fruits = {"banana","orange","apple"}
--返回table连接后的字符串
print(table.concat(fruits))
--指定连接符
print(table.concat(fruits,','))
--指定索引
print(table.concat(fruits,',',,)) --[[
运行结果:
bananaorangeapple
banana,orange,apple
orange,apple
--]] --插入和移除
fruits2 = {"banana","orange","apple"}
--末尾插入
table.insert(fruits2,'mango')
print(fruits2[])
--索引为2的键处插入
table.insert(fruits2,,'grapes')
print(fruits2[]) print(fruits2[])
table.remove(fruits2)
print(fruits2[]) --[[
运行结果:
mango
grapes
mango
nil
--]] --table排序
fruits3 = {"banana","orange","apple", "grapes"}
print("排序前")
for i,v in ipairs(fruits3) do
print(i,v)
end table.sort(fruits3) print("排序后")
for i,v in ipairs(fruits3) do
print(i,v)
end --获取table的长度
print(#fruits3)
print(table.getn(fruits3))
以下为table的补充内容:
table.insert(t, pos, value) 在t指定位置插入元素
table.insert(t, value) 在t末尾插入元素
table.remove(t, pos) 在t指定位置删除元素,并返回删除的元素
table.remove(t) 在t末尾删除元素,并返回删除的元素
a = {}; table.insert(a,, )
table.insert(a,, )
table.insert(a,) for i,v in ipairs(a) do
print(i,v)
end print("-----------"); b = table.remove(a, ); print("b = " .. b); table.remove(a); for i,v in ipairs(a) do
print(i,v)
end
输出结果:
Lua中Table的学习的更多相关文章
- lua中 table 元表中元方法的重构实现
转载请标明出处http://www.cnblogs.com/zblade/ lua作为游戏的热更新首选的脚本,其优势不再过多的赘述.今天,我主要写一下如何重写lua中的元方法,通过自己的重写来实现对l ...
- lua中 table 重构index/pairs元方法优化table内存占用
转载请标明出处http://www.cnblogs.com/zblade/ lua作为游戏的热更新首选的脚本,其优势不再过多的赘述.今天,我主要写一下如何重写lua中的元方法,通过自己的重写来实现对l ...
- lua中 table.getn(t) 、#t、 table.maxn(t) 这三个什么区别?
lua中 table.getn(t) .#t. table.maxn(t) 这三个什么区别? RTlocal t = {1,888,x= 999,b=2,5,nil,6,7,[10]=1,8,{z = ...
- Lua中table的实现-《Lua设计与实现》
本文来自<Lua设计与实现>的阅读笔记,推荐Lua学习者可以购买一本,深入浅出讲解lua的设计和实现原理,很赞,哈哈 Lua中对于表的设计,是基于数组和散列表,和其他语言不同,对于数组 ...
- lua中table的遍历,以及删除
Lua 内table遍历 在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: 1. ipairs for index, value in ipair ...
- lua中table如何安全移除元素
在Lua中,table如何安全的移除元素这点挺重要,因为如果不小心,会没有正确的移除,造成内存泄漏. 引子 比如有些朋友常常这么做,大家看有啥问题 将test表中的偶数移除掉local test = ...
- C++对Lua中table进行读取、修改和创建
C++代码: // LuaAndC.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #i ...
- Lua中元表的学习
--table 中我们可以访问对应的key来得到value值,但是却无法对两个 table 进行操作. --元表(Metatable),允许我们改变table的行为,可以对两个table进行操作 -- ...
- Lua中数组的学习
--数组的大小是不固定的 --一维数组的逻辑结构是线性表索引从1开始 array1 = {"Lua", "Tutorial"} , do print(array ...
随机推荐
- 3:4 OGNL 表达式二
总结: 一:ActionContext的结构: 1:set标签创建的对象也是作为非值栈对象. 2:(非值栈的存储都是以键值对的方式存的.) [问非值栈的 User对象] [用例] 关于request: ...
- Python: 序列list:保持元素顺序同时消除重复值
问题:怎样在Python的一个序列上面保持元素顺序的同时消除重复的值?answer:如果序列上的值都是hashable 类型,那么可以很简单的利用集合或者生成器来解决这个问题. eg1: def de ...
- python环境安装selenium和手动下载安装selenium的方法
方法1:cmd环境下,用pip install selenium 可能会很慢 方法2:下载selenium安装包手动安装 下载地址:https://pypi.org/project/selenium/ ...
- python进程、多进程
进程: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当 ...
- 手撕vue-cli配置——webpack.prod.conf.js篇
'use strict' const path = require('path') const utils = require('./utils') const webpack = require(' ...
- OpenCV实现SfM(三):多目三维重建
http://lib.csdn.net/article/opencv/24548 注意:本文中的代码必须使用OpenCV3.0或以上版本进行编译,因为很多函数是3.0以后才加入的. 目录: 问题简化 ...
- INNODB引擎概述
INNODB存储引擎的历史概述: INNODB存储引擎是OLTP应用中核心表的首选存储引擎. INNODB存储引擎包含在所有mysql数据库的二进制发行版本中.早期其版本随着mysql数据库的更新而更 ...
- 20144303石宇森 《网络对抗》 WEB基础实践
20144303石宇森 <网络对抗> WEB基础实践 实验后回答问题 一.什么是表单 表单是一个包含表单元素的区域.用form来定义. HTML是静态显示网页的,无法跟服务器进行交互,所以 ...
- C++ 单例模式(转载)
转载:http://www.cnblogs.com/cxjchen/p/3148582.html 转载:http://blog.csdn.net/hackbuteer1/article/details ...
- Python3基础 函数 可变参数,将传进来的参数转成列表
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...