lua基础【三】唯一数据结构table表

本文详细介绍了 Lua 中的重要数据结构——Table,包括其作为关联数组的特性、动态大小、多种用途如数组、记录等。通过示例展示了 Table 的创建、添加条目、获取长度、初始化记录风格以及如何进行元素的插入、删除操作,同时提到了二维表的概念。
--[[
 
 数据结构table对象(一种动态分配的对象)
 lua中的表操作,table类型实现了“关联数组的”。“关联数组是一种具有特殊索引方式的数组”
 可以通过下标或者字符串来索引它,table没有固定的大小,table是Lua仅有的数据结构,
 既然这么说,就表明table的意义很重大,也极为重要
 
 我们可以用table表示普通数组,字符表,集合记录,队列,也可以通过table 
 表示,模块(module),包(package),对象object
 
  table的创建是通过uoge构造表达式完成的,最简单的构造表达式是{}
  

]]--

--创建一个table
tab={}

--循环添加条目
for i=1,10 do
    tab[i]=i
end

--获取table的长度
print(#tab)

for i=1,#tab do

 print(tab[i])
end

--单一添加条目(这两种添加条目的做法都是一样的,我更侧重于第一种方式)
tabs={}
tabs.name="hello"
tabs["name"]="world"
print (tabs.name)

t={color="red",x=3,3,4}

print(#t)--结果是2

print(t.color)  --red


--[[

关于lua的函数,function

]]--

--[[
lua中自定义类型和线程
]]--

--[[

lua表达式  应记住以下关系操作符

<

>

<=

>=

==

~=  --不等于

逻辑操作符:

and   or   not 

]]--

--[[
table构造式,构造式是用于创建和初始化table的表达式,这是lua特有的一种表达式,并且yeshilua
中最有用的,最通用的机制之一

最简单的构造式就是一个空构造式{},用于创建一个空的table,

例如:
]]--

days={"sunday","monday","tuesday","wednesday","Thursday","Firday","staturday"}

--会将days[1]初始化为sunday,days[2]初始化为monday
print(days[4])

--lua还提供了一种特殊的语法用于初始化记录风格的table

a={x=10,y=20}
--它等价于以下写法
a={}
a.x=10
a.y=20

--lua中删除一个table得条目,只需要将该条目置空即可

--[[
在构造式中还可以用分号代替逗号。通常会将分号用于分割构造式中不同的成分;
例如:
将列表部分与记录部分明显的分开

]]--

a15={x=10,y=45; "one","two","three"}


--[[
table相关
]]--

--获取表中的原书个数
str={"halou","nihao","zaima"}
print(table.getn(str))

--向表中插入元素
table.insert(str,4,"women")

--从表中删除元素
for k, v in ipairs(str) do

table.remove(str,k)
end


str[1]="chiba"
for i=1,#str do
  print(str[i])
end

--lua语言极为类似C语言,我们可以对其biao得内部进行管理,如果表的
--内部被改变,则原表也会发生改变

str2={name="hehe",xuhao="2011",age=24 ; 24,23,25}

print(table.getn(str2))

table.insert(str2,2,15)

for k,v in ipairs(str2) do
	print(v)
end

--2号位置插入一个元素后,原来二号位置的元素会向后移动一个位置

--关于二维表,就是需要表示两个以上的字段。
a={name={"zhangsan","lishi","wangwu"},age={24,25,26}}
 for k,v in ipairs(a.name) do 
 print(v)
 end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值